数字IC后端设计实现之Innovus update_names和changeInstName的各种应用场景

2024-01-03 13:27:30

今天吾爱IC社区小编给大家分享下数字IC后端设计实现innovus中关于update_names和changeInstName在PR中的具体使用方法。

update_names

1)为了避免和verilog语法保留的一些关键词,比如input,output这些,是不允许存在叫这类名字的wire等。如果有这样的input,那么通过下面的命令会自动把input改成input_1。

innovus> update_names -verilog

这个类似写tcl脚本,你如果定义一个变量叫for ,while,break,那么就会有冲突,认错的情况。

  1. 批量把设计中[ ] 全部替换成_ (比如有时候LVS要用)

innovus> update_names -restricted {[ ]} -replace_str “_”

  1. 自动修改设计中存在同名的net和instance (默认不区分大小写)

innovus> update_names -nocase -net
innovus> update_names -nocase -inst

比如两条net分别是"NET_ABC" 和"net_abc",这个在RC抽取会报它们是同一条net。通过上面的命令后工具会自动给这两条net加上一个数字后缀,比如"_1 和_2"。

同理instance工具也是这么处理的。

4)修改design名字

innovus> update_names -design -map {abcreg xyzreg}

修改后我们可以通过下面的命令来确认是否更改成功。

innovus> dbGet top.name
@innovus> get_db designs .name #In CUI

5)更改设计中子模块module的名字

innovus> update_names -change_modules design_dual_rank_synchronizer_9 -local -map {design_dual_rank_synchronizer_9 new}

通过上述命令工具会把原来的design_dual_rank_synchronizer_9这个module名改成 new。这里需要改的名字写在map选项即可。

changeInstName

语法: changeInstName -inst instName -newBasename baseName

innovus > changeInstName -inst ff12 -newBaseName ff123

innovus > changeInstName -inst Top/subtop/ff12 -newBaseName ff123

思考题:上次命令执行后,新的instance名字(full_name)叫什么?

最后分享一个把设计中instance名字带“:”符号的instance进行重命名的小脚本。

通过这个脚本大家又可以来练习foreach,dbGet,lindex,split这些tcl脚本的基本使用方法。对于数字IC后端工程师,需要慢慢学会看懂脚本,学会抄脚本,最后会自己改脚本写一些小脚本。

foreach i [dbGet top.insts.name :] {
set newInst “[lindex [split [lindex [split $i “/”] end] “:”] 0][lindex [split [lindex [split $i “/”] end] “:”] 1]”;
changeInstName -inst $i -newBaseName $newInst
#Puts $newInst;
}

文章来源:https://blog.csdn.net/weixin_37584728/article/details/135360427
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。