首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用GOF为所有input port插入diode

如何用GOF为所有input port插入diode

作者头像
ExASIC
发布2021-07-05 16:41:10
发布2021-07-05 16:41:10
1K00
代码可运行
举报
文章被收录于专栏:ExASICExASIC
运行总次数:0
代码可运行

在APR时,通常会对模拟给数字(D2A)的信号插入二极管,来加强信号完整性、减小ESD干扰,或者手动修天线效应(antenna)。

来自美国NanDigits的网表ECO工具,GOF,提供了丰富的网表处理API,结合Perl语言语法的灵活性,可以轻松搞定APR过程中的各种优化需求。

今天介绍GOF的两个API:get_ports和get_loads。

get_ports:

获取顶层的端口列表,可以根据端口方向input、output、inout来筛选。

get_loads:

获取连线的负载列表,有选项控制是否跨模块、是否跳过buffer,是否跳过invertor等。

功能实现

所以今天“为所有input port的负载插二极管”的需求可以分解成两步:

一、找出所有的input port

二、用for循环找出每一个inport port的负载

代码语言:javascript
代码运行次数:0
运行
复制
my @all_inputs = get_ports("-input");

open(FOUT, ">add_diode.tcl");
foreach my $input (@all_inputs){
    my @loads = get_loads($input, "-hier");
    foreach my $load (@loads){
        my @t = @$load;
        if($t[0] =~ m/DIODE/){
            print("skip {$t[0] $t[1]}\n");
        }else{
            print FOUT ("attachDiode -diodeCell ANTENNA27T -prefix DIO1_ {$t[0] $t[1]}\n");
            print FOUT ("attachDiode -diodeCell ANTENNA27T -prefix DIO2_ {$t[0] $t[1]}\n");
            print FOUT ("attachDiode -diodeCell ANTENNA27T -prefix DIO3_ {$t[0] $t[1]}\n");
        }
    }
}

close(FOUT);

在gof shell里直接运行这段perl脚本,即可生成tcl文件。在后端工具innovus里source tcl文件,就完成了插入diode。

生成的tcl文件大致如下:

更多API请查阅(或者点击文末的阅读原文):

https://nandigits.cn/doc/index.php?md=gof_api_toc

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ExASIC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档