当前位置: 首页 > news >正文

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.varch_name = topbase_name = topdont_use_cells_effective = base_cell:HOLDX1entity_filename = test.ventity_name = topescaped_name = tophdl_all_filelist = {default -v2001 {SYNTHESIS} {test.v} {} {}}hdl_filelist = {default -v2001 {SYNTHESIS} {test.v} {} {}}hdl_user_name = toplanguage = Veriloglibrary_name = defaultlp_clock_gating_max_flops = inflp_clock_gating_min_flops = 3name = topobj_type = designsdp_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/clknet:top/clkport_bus:top/clkport: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命令,他只能接受一个对象,就会出现错误。

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

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

// 指定对象类型主要是为了解决不完整路径,因此不展示完整路径的例子
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 不允许           
http://www.lryc.cn/news/585273.html

相关文章:

  • 牛客 —— JZ22 链表中倒数最后k个结点
  • cesium添加原生MVT矢量瓦片方案
  • 云暴露面分析完整指南
  • 香港站群服务器8C/4C/2C/1C有什么区别
  • Elasticsearch混合搜索深度解析(上):问题发现与源码探索
  • C++11中的std::minmax与std::minmax_element:原理解析与实战
  • 12. 说一下 https 的加密过程
  • 笔记 | 理解C/汇编中的数组元素访问
  • 飞算JavaAI:给Java开发装上“智能引擎”的超级助手
  • UNet改进(21):门控注意力机制在UNet中的应用与优化
  • 前端高频面试题深度解析(JavaScript + Vue + jQuery)
  • 云蝠智能 VoiceAgent重构企业呼入场景服务范式
  • SpringCloud云间剑歌 第一章:云间阁现,群雄并起
  • 智能运维管理平台:AI赋能的数字化转型引擎
  • DNS(Domain Name System,域名系统)
  • java底层的native和沙箱安全机制
  • JavaScript加强篇——第四章 日期对象与DOM节点(基础)
  • 如何批量旋转视频90度?
  • 【DataFlow】数据合成流水线工具
  • Neo4j启动
  • 将手工建模模型(fbx、obj)转换为3dtiles的免费工具!
  • 抽丝剥茧,一步步推导“大模型强化学习的策略梯度公式”
  • manifest.json只有源码视图没其他配置
  • Monorepo 与包管理工具:从幽灵依赖看 npm 与 pnpm 的架构差异
  • php的原生类
  • 云、实时、时序数据库混合应用:医疗数据管理的革新与展望(中)
  • 安全领域的 AI 采用:主要用例和需避免的错误
  • 将Blender、Three.js与Cesium集成构建物联网3D可视化系统
  • Redis数据库基础篇章学习
  • 2025年NSSCTF-青海民族大学 2025 新生赛WP