1脚本

proc change_cell { cell ref }  {

##第一部分:得到这个cell的name和位置

set cell_name [get_attibute  -objects [get_cells $cell] -name full_name]

set location  [get_attibute  -objects [get_cells $cell] -name  origin]

##第二部分:得到这个cell的logic pin和与之连接的pin

set input_pin [get_pins  -of_objects [get_cells $cell] -filter “port_type==signal&&direction==in”]

set output_pin [get_pins  -of_objects [get_cells $cell] -filter “port_type==signal&&direction==out”]

set input_pin_connect_pin [remove_from_collection [all_connected -leaf [get_nets -of_objects $input_pin]] $input_pin_connect_pin]

set output_pin_connect_pin [remove_from_collection [all_connected -leaf [get_nets -of_objects $output_pin]] $output_pin_connect_pin]

##第二部分:断掉这个cell的逻辑连接

disconnet_net $input_pin

disconnet_net $output_pin

disconnet_net $input_pin_connect_pin

disconnet_net $output_pin_connect_pin

##第三部分:删除这个cell;创建一个新的ref_name为“$ref”的cell,并讲其移动到原来cell的位置

remove_cells [get_cells $cell]

create_cells $cell_name $ref

move_objects [get_cells $cell_name] -to $location

##第四部分:得到新创建的cell的login pin;并讲原来cell的连接关系复制到新的cell上

set input_pin_new  [get_pins  -of_objects [get_cells $cell_name] -filter “port_type==signal&&direction==in”]

set output_pin_new [get_pins  -of_objects [get_cells $cell_name] -filter “port_type==signal&&direction==out”]

connect_pins -driver $input_pin_connect_pin $input_pin_new

connect_pins -driver $output_pin_new $output_pin_connect_pin

}

上述脚本定义了一个程序“change_cell”,其功能可以理解为把一个cell size_cell为另一个一个功能不等效的cell。这个程序的使用语法与size_cell命令保持一致。

2命令分析2.1 get_attibute

在ICC2中所有的对象(包括物理的和逻辑的,例如:cell、blockage、shape、via、pin、track、core_area等等)称之为objects。用来表征每种objects的特征的称之为attibute。

例如cell拥有:full_name(名字)、ref_name(库里面的名字)、位置(包括bbox、origin、bounding_box.ll等)、hieght(高度)、is_physical_only(是否是纯物理cell)、is_memory_cell(是否是memory)等attribute。

得到某个object的某个属性的值的命令是get_ attibute.

查看某一类别(class)的objects的命令是list_ attibute;例如查看cell拥有多少种attrbute的操作如下(截图只是截取部分)。

2.2disconnect_net

断掉pin、net等objects的连接关系。

2.3 connect_pins

建立某些pin之间的连接关系。

2.4remove_from_collection

移除一个集合(collection)中的某些元素,形成一个新的集合。

2.5all_connected

得到与指定的objects逻辑相连的所有objects。

linux 使用icc运行tcl,Tcl在ICC2中的应用:定义一个proc,实现将一个cell直接替换成另一个功能不等价的cell...相关推荐

  1. linux VCS+verdi运行UVM实战(第二章)中的例子

    目录 前言 介绍 建立工程 运行代码 查看波形 总结 前言 用VCS+verdi运行了下UVM实战中的例子(第二章). 介绍 在某宝上花了几十块,买了个虚拟机(已经安装好VCS+verdi).直接用U ...

  2. linux 使用icc运行tcl,ICC的步骤流程方法

    ICC实验步骤 步骤1:在lab1_flow路径下启动ICC shell. > icc_shell –gui 步骤2:设置search path.target_library.link_libr ...

  3. Linux shell 交互式编程、TCL/TK 和 Expect 编译与安装、expect 编程

    以下文章资源都来源于网络,保留原作者的一切权利: Expect 被用来进行一些需要进行交互是shell 编程的,比如完成ssh 自动登录,就可以使用 expect 编程来实现 1,获取原始的tcl源码 ...

  4. TCL/TK 学习笔记 之 用C定义自己的TCL命令

    第一步:编写一个.c文件,例如simple.c               /**simple.c**/               #include "simple.h"     ...

  5. Linux:检查当前运行级别的五种方法

    2019独角兽企业重金招聘Python工程师标准>>> 运行级就是Linux操作系统当前正在运行的功能级别.存在七个运行级别,编号从0到6.系统可以引导到任何给定的运行级别.运行级别 ...

  6. linux安装eclipse运行web,Linux安装Tomcat,运行Eclipse,web项目

    到官网下载:https://tomcat.apache.org/download-80.cgi  在这里是8.5.39版本 下载tar,gz 提取解压后,我这里是放到opt目录下 cd  切换目录 / ...

  7. python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间、内存使用量、内存占用率、PID、名称、创建时间等;

    python使用psutil获取系统(Windows Linux)所有运行进程信息实战:CPU时间.内存使用量.内存占用率.PID.名称.创建时间等: psutil模块可以跨平台使用,支持Linux/ ...

  8. Linux下面如何运行.sh文件

    Linux下面如何运行.sh文件 命令行下面: 1.chmod 空格"+x" 空格 你的sh文件名 (+x是一个整体,不要拆开) 2.输入"./你的sh文件名" ...

  9. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  10. linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间

    1 linux上根据运行程序的进程号,查看程序所在的绝对路径 1.如下,我想查看python 25_run_train_tripletloss_sknet_8w_offline_c_plus.py 这 ...

最新文章

  1. 云厂商和开源厂商“鹬蚌相争”,他却看到了开发者的新机会
  2. python dataframe分组求和,pandas datafram中按特定月份分组和求和值
  3. 【硬件】推荐软件『软硬件的基准测试工具』
  4. 【转】MongoDB学习笔记(查询)
  5. Ubuntu18.04安装HP laser 1020打印机
  6. Spring Boot使用JSP模板引擎
  7. php城市 省份,怎么获取省份和城市?
  8. 经纬度计算距离公式(测地线距离)
  9. excel求回归直线方程的公式_求回归直线方程的三种方法
  10. 2023西安电子科技大学计算机考研信息汇总
  11. 明尼苏达大学双城分校计算机科学,UMN的CS「明尼苏达大学双城分校计算机科学与工程系」...
  12. android obtain,Android 模拟Message.obtain(),构建自己的缓存池
  13. 前后端分离图片验证码session获取问题
  14. Kubernetes架构基础知识
  15. 明明输给了 SpaceX,OneWeb 为什么还能拿到英国政府的钱?
  16. 什么是 Razor?
  17. 计算机毕设(附源码)JAVA-SSM基于web的社团管理系统
  18. 服务器自定义npc音乐,Custom NPC 自定义NPC模组自定义音乐添加教程
  19. 2010-2020年和讯网分行业社会责任指数
  20. 范德堡计算机科学硕士,范德堡大学计算机科学理学硕士研究生申请要求及申请材料要求清单...

热门文章

  1. dell 服务器 重装Linux系统
  2. MySQL死锁分析与解决之路
  3. HDU 6437 (费用流)
  4. Ci24R1_与Si24R1的通讯兼容,更具性价比的2.4GHz收发芯片
  5. Android之开发者模式配置全面(解决打开了开发者模式,程序还是不能烧进手机问题)
  6. 黑龙江全教计算机科技有限公司,50米×8往返跑是个技术活,技巧教学很重要
  7. win10键盘全变成快捷键_电脑键盘灵敏度设置方法
  8. 组装台式计算机的部件,组装台式电脑的配置清单
  9. c语言加权成绩,c – 加权中值计算
  10. 思科路由器NAT配置案例(static tcp)