news 2026/10/26 17:53:43

Genus:设计信息结构以及导航方式(路径种类)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Genus:设计信息结构以及导航方式(路径种类)

相关阅读

Genushttps://blog.csdn.net/weixin_45791458/category_13003519.html?spm=1001.2014.3001.5482


Genus使用设计信息结构(Design Information Hierarchy)对数据库进行建模,其中包括各种对象以及其属性,设计信息结构与Linux的目录结构非常相似,如图1所示。

图1 设计信息结构

当用户启动Genus时会进入设计信息结构的根目录/或者说root,如下面的命令提示符所示。

@genus:root: 1>

就像Linux中的ls、cd、pwd命令那样,Genus也提供了很多导航命令用于与设计信息结构进行交互,如下所示。

get_logical_name get_object_type set_top_module vbasename vcd vdirname vdirs vfind vls vname vpopd vpushd vpwd

下面将以vls命令为例,说明设计信息结构中的导航方式及路径种类,首先在根目录中使用vls命令查看内容,如下所示。

@genus:root: 1> vls ./ designs/ hdl_libraries/ messages/ tech/ commands/ flows/ libraries/ obj_types/

其中designs目录保存了设计对象,使用vls命令查看其内容,如下所示。

@genus:root: 2> vls ./designs root:.designs: ./

由于尚未读取设计,此时其为空目录,下面使用read_hdl命令读取设计、read_libs命令读取库、最后使用elaborate命令展开设计,如下所示。

@genus:root: 3> read_hdl test.v @genus:root: 4> read_libs slow.lib @genus:root: 5> elaborate top *****

此时使用vls命令查看,可以发现designs目录中出现了一个目录top,注意使用了-attribute选项显示属性信息,小括号中的design表示目录top是一个设计对象,如下所示。

@genus:root: 6> vls ./designs -attribute root:.designs: Total: 2 items ./ top/ (design) Attributes: arch_filename = test.v arch_name = top base_name = top dont_use_cells_effective = base_cell:HOLDX1 entity_filename = test.v entity_name = top escaped_name = top hdl_all_filelist = {default -v2001 {SYNTHESIS} {test.v} {} {}} hdl_filelist = {default -v2001 {SYNTHESIS} {test.v} {} {}} hdl_user_name = top language = Verilog library_name = default lp_clock_gating_max_flops = inf lp_clock_gating_min_flops = 3 name = top obj_type = design sdp_files = verification_directory = fv/top

Genus中的所有对象都是由目录或文件(如果其不可再分)表示的,例如/designs/top是一个设计对象,/designs/top/nets/clk是一个线网对象,/designs/top/ports/clk是一个端口对象。但不是所有目录都表示对象,例如/designs不是对象,/designs/top/nets不是对象,/designs/top/ports不是对象。

细心的读者可能注意到了,之前的所有路径都是以相对路径的形式给出的,就像是Linux中的相对路径那样,但设计信息结构的路径种类却更复杂(PS:Genus的手册上对这些路径的用法解释地十分模糊,笔者也是经过了大量的实验进行了总结)。

完整的绝对路径

完整的绝对路径就是从根目录写起(以/开头)的路径,下面展示了几个完整的绝对路径(它们之中有些是对象,有些不是)。

/designs // 非对象 /designs/top // 对象 /designs/top/nets // 非对象 /designs/top/ports // 非对象 /designs/top/nets/clk // 对象 /designs/top/ports/clk // 对象 /libraries // 非对象 /libraries/base_cells // 非对象 /libraries/base_cells/OR2X1 // 对象 /libraries/base_cells/OR2X1/base_pins // 非对象 /libraries/base_cells/OR2X1/base_pins/A // 对象

不完整的绝对路径

如果路径层次较深,使用完整的绝对路径会显得十分臃肿和繁琐,不完整的绝对路径允许在路径中只保留(如有)那些作为对象的层次(对于那些不作为对象的层次,可以任意删减),下面展示了几个不完整的绝对路径(它们之中有些是对象,有些不是)。

/top // 对象 /top/nets // 非对象 /top/ports // 非对象 /top/nets/clk // 对象 /top/ports/clk // 对象 /top/clk // 对象 /base_cells // 非对象 /base_cells/OR2X1 // 对象 /libraries/OR2X1 // 对象 /OR2X1 // 对象 /OR2X1/base_pins // 非对象 /OR2X1/base_pins/A // 对象 /OR2X1/A // 对象

完整的相对路径

完整的相对路径就是相对当前目录(以./或../开头)的路径,下面展示了几个完整的相对路径(它们之中有些是对象,有些不是)。

// 假设当前工作目录为/designs ./ // 非对象 ./top // 对象 ./top/nets // 非对象 ./top/ports // 非对象 ./top/nets/clk // 对象 ./top/ports/clk // 对象 ../libraries // 非对象 ../libraries/base_cells // 非对象 ../libraries/base_cells/OR2X1 // 对象 ../libraries/base_cells/OR2X1/base_pins // 非对象 ../libraries/base_cells/OR2X1/base_pins/A // 对象

不完整的相对路径

就像不完整的绝对路径那样,不完整的相对路径允许在路径中只保留(如有)那些作为对象的层次(对于那些不作为对象的层次,可以任意删减),下面展示了几个不完整的绝对路径(它们之中有些是对象,有些不是)。

// 假设当前工作目录为/designs ./top/clk // 对象 ../base_cells // 非对象 ../base_cells/OR2X1 // 对象 ../libraries/OR2X1 // 对象 ../OR2X1 // 对象 ../OR2X1/base_pins // 非对象 ../OR2X1/base_pins/A // 对象 ../OR2X1/A // 对象

完整的相对path属性的路径

与Linux不同的是,当路径不以/或./或../开头时将视为相对path属性,下面展示了几个完整的相对path属性的路径(它们之中有些是对象,有些不是)。

// 假设path属性为/designs top // 对象 top/nets // 非对象 top/ports // 非对象 top/nets/clk // 对象 top/ports/clk // 对象 top/../../libraries/ // 非对象 top/../../libraries/base_cells // 非对象 top/../../libraries/base_cells/OR2X1 // 对象 top/../../libraries/base_cells/OR2X1/base_pins // 非对象 top/../../libraries/base_cells/OR2X1/base_pins/A // 对象

不完整的相对path属性的路径

就像不完整的绝对路径那样,不完整的相对path属性的路径允许在路径中只保留(如有)那些作为对象的层次(对于那些不作为对象的层次,可以任意删减),下面展示了几个不完整的相对path属性的路径(它们之中有些是对象,有些不是)。

// 假设path属性为/designs top/clk // 对象 top/../../base_cells // 非对象 top/../../base_cells/OR2X1 // 对象 top/../../libraries/OR2X1 // 对象 top/../../OR2X1 // 对象 top/../../OR2X1/base_pins // 非对象 top/../../OR2X1/base_pins/A // 对象 top/../../OR2X1/A // 对象

指定对象类型的路径

当使用不完整的路径时,可能会出现一个路径对应多种对象的情况,如下所示。

@genus:root:.messages 7> vls /top/clk hnet:top/clk net:top/clk port_bus:top/clk port:top/clk @genus:root:.messages 8> vcd /top/clk Error : A single object was expected, but multiple objects were found. [TUI-62] [vcd] : The argument that found multiple objects was '/top/clk'. : Use the 'vfind' command to narrow the list down to a single object. vcd: sets position in object hierarchy

对于vls命令,它会考虑所有符合的对象,但对于vcd命令,他只能接受一个对象,就会出现错误。

使用类型作为前缀可以解决这个问题(这也被称为DPO(Dual Port Object)标记),但需要注意的是,该方法将会把所有路径视为相对根目录(即使以./开头),下面展示了几个指定对象类型的路径(它们之中有些是对象,有些不是)。

需要注意的是,如果指定对象类型,如果不会出现一个路径对应多个对象的情况,则允许在路径中只保留最后一层对象名(对于其他层次,可以任意删减,这更加激进)。

// 指定对象类型主要是为了解决不完整路径,因此不展示完整路径的例子 design:/top // 对象 net:/top/nets/clk // 对象 port:/top/ports/clk // 对象 net:/top/clk // 对象 port:/top/clk // 对象 port:/clk // 对象 net:/clk // 对象 base_cell:/base_cells/OR2X1 // 对象 base_cell:/libraries/OR2X1 // 对象 base_cell:/OR2X1 // 对象 base_pin:/OR2X1/base_pins/A // 对象 base_pin:/OR2X1/A // 对象 // base_pin:/A 不允许
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 17:50:49

篡改猴安装配置与脚本使用全攻略:从油猴到用户脚本管理器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 17:50:19

51单片机期末速成:C语言编程核心考点与实战项目全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 17:49:34

微信小程序登入界面制作与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 17:49:29

ESP32应用商店实战:从OTA到设备软件生命周期管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 17:48:26

FPGA功耗优化实战:从Vivado功耗分析到板级实测避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华