Genus:设计信息结构以及导航方式(路径种类) 相关阅读Genushttps://blog.csdn.net/weixin_45791458/category_13003519.html?spm1001.2014.3001.5482Genus使用设计信息结构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/topGenus中的所有对象都是由目录或文件如果其不可再分表示的例如/designs/top是一个设计对象/designs/top/nets/clk是一个线网对象/designs/top/ports/clk是一个端口对象。但不是所有目录都表示对象例如/designs不是对象/designs/top/nets不是对象/designs/top/ports不是对象。细心的读者可能注意到了之前的所有路径都是以相对路径的形式给出的就像是Linux中的相对路径那样但设计信息结构的路径种类却更复杂PSGenus的手册上对这些路径的用法解释地十分模糊笔者也是经过了大量的实验进行了总结。完整的绝对路径完整的绝对路径就是从根目录写起以/开头的路径下面展示了几个完整的绝对路径它们之中有些是对象有些不是。/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 不允许