icdlab的个人空间 https://blog.eetop.cn/icdlab [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

SkillBridge-Python与virtuoso交互工具

热度 4已有 1094 次阅读| 2023-8-21 19:01 |个人分类:Tools|系统分类:芯片设计| IC, Tools

来源微信公众号:icdlab,关注公众号获取更多信息



SkillBridge简介

  • skillbridge是由unihd-cag开发的通过python语言控制virtuoso的工具套装
  • skillbridge可以实现python与virtuoso交互
  • skillbridge需要virtuoso端运行一个脚本启动和管理python server
  • skillbridge启动的python server会等待skill指令,然后将结果返回
  • skillbridge提供了python客户端库,封装了连接和传输细节,并为Skill代码提供了一系列与virtuoso交互的接口函数

SkillBridge功能

  • 通过python程序运行virtuoso skill程序
  • 将skill数据自动转换为python数据
  • 将python中的数值,字符串,列表,布尔和字典数据类型转换为skill数据

SkillBridge实现方法

下图为skillbridge实现方法,图片由unihd-cag绘制

图片

SkillBridge安装需求

  • Python 版本 >= 3.8
  • pip
  • cadence virtuoso版本  >= 617

SkillBridge安装

  1. 安装相应版本python和virtuoso,如安装完成跳过此步骤
  2. 获取skillbridge安装源文件
  3. 进入skillbridge源文件目录  
    cd ~/your/path/skillbridge
  4. pip安装skillbridge  
    pip install -e .

    图片

  5. 验证skillbridge是否安装成功 新开termial,在terminal中输入skillbridge命令回车,会有如下显示信息
[icdlab@icdlab ~]$ skillbridge 
usage: skillbridge [-h] {shell,path,generate,status,export,import} ...

CLI utility for the various skillbridge management commands

optional arguments:
  -h, --help            show this help message and exit

commands:
  {shell,path,generate,status,export,import}
    shell               opens a python interpreter with a connected workspace
    path                show the path to the skill script
    generate            generate static completion file
    status              deprecated, not needed anymore
    export              deprecated, not needed anymore
    import              deprecated, not needed anymore
  1. 获取skillbridge skill server端脚本路径
    在terminal中输入以下命令获取路径:
    skillbridge path
[icdlab@icdlab skillbridge]$ skillbridge path
Path to Skill server script:
/home/icdlab/tools/skillbridge/skillbridge/server/python_server.il

Type this into the Skill console:
load("/home/icdlab/tools/skillbridge/skillbridge/server/python_server.il")
  1. 实现python_server.il文件自加载
    将python_server.il加入virtuoso启动文件.cdsinit文件,每次启动virtuoso自动load脚本
    将步骤6中获取的python_server.il文件地址添加入.cdsinit文件末尾,如下:
; add this line at the end of .cdsinit file 
load("/home/icdlab/tools/skillbridge/skillbridge/server/python_server.il")

 启动virtuoso, load python_server.il文件后CIW会有如下显示信息

Loading ./.cdsinit init file from the site init file.
"load ICDSkill Menu"
Available commands:
 pyStartServer ?id "default" ?logLevel "WARNING" ?singleMode nil ?timeout nil ?python "python"
 pyKillServer
 pyReloadScript
 pyShowLog [numberOfLines]
 pyRunScript path ?args list() ?python "python"
  1. 启动server 在virtuoso CIW窗口中输入命令:  
    pyStartServer ?id "default" ?logLevel "WARNING" ?singleMode nil ?timeout nil ?python "python"
    pyStartServer命令后的选项可根据需要设置
  2. (可选)生成python中skill函数静态文件(此步骤只需要执行一次) 在启动virtuoso后在terminal中输入命令:  
    skillbridge generate
    注意:执行此步骤之前需要安装python依赖库:  
    pip install mypy
  3. 安装完成

terminal使用

在terminal中输入:

skillbridge shell 

即可在terminal中用python命令与virtuoso交互,示例如下:

[icdlab@icdlab ~]$ skillbridge shell
Interactive Python interpreter with skillbridge Workspace `ws`
>>> cellx = ws.ge.get_edit_cell_view()
>>> print(dir(cellx))
['DBUPerUU''any_inst_count''area_boundaries''assoc_text_displays''b_box''blockages''cell''cell_name''cell_type''cell_view''cell_view_type''clusters''conns''constraint_groups''create_time''fig_groups''file_name''file_time_stamp''g_cell_patterns''group_members''groups''guides''inst_header_refs''inst_headers''inst_refs''instance_masters''instances''is_param_cell''layer_headers''layer_purpose_pairs''lib''lib_name''lpps''markers''mem_insts''mode''modified_but_not_saved''modified_counter''mosaics''need_refresh''net_count''nets''obj_type''pr_boundary''prop''routes''row_headers''rows''shapes''sig_names''signals''site_pattern''snap_boundary''steiners''sub_masters''super_master''term_count''terminals''text_displays''track_patterns''user_units''via_headers''via_masters''via_variants''vias''view''view_name']
>>> print(cellx.lib_name)
icdlab
>>> print(cellx.cell_name)
icdPcellRect
>>> print(cellx.view_name)
layout
>>> print(cellx.instances)
None
>>> print(cellx.lib)
<remote Lib@0x151b2f40>
>>> 

Python脚本范例

简单范例如下:

from skillbridge import Workspace

ws = Workspace.open()
icdCell = ws.ge.get_edit_cell_view() 
# Skill equivalent: icdCell = geGetEditCellView()

print(dir(icdCell))
print(icdCell.lib_name)
print(icdCell.cell_name)
print(icdCell.view_name)

skillbridge使用

skillbridge文件获取

关注微信公众号:icdlab,将本条微信共享到朋友圈,点赞达到5个后,将朋友圈截图发送到公众号,公众号将会在24小时之内将下载链接发送给您

免责声明:
1,本公众号主要是交流学习IC设计知识,部分素材源于网络,若有侵权,作者会第一时间修改删除;
2,本公众号标明原创的文章欢迎转载并注明出处;
3,本公众号文章中出现的脚本仅供学习之用,作者不对其他任何个人或组织在使用脚本过程中产生的任何纠纷负责;
4,本公众号的主体为个人,发表文章纯属个人交流学习行为,文章的观点也属个人观点,与作者曾经任职或者正在任职的公司、其他个人或组织没有任何关系;
5,本公众号文章为个人撰写,错误和疏漏之处在所难免,希望大家指正;
6,本公众号发表的文章依赖各种软件,作者所获取的软件仅供学习交流之用,若有侵权,作者将配合删除;


4

点赞

刚表态过的朋友 (4 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 10

    粉丝
  • 1

    好友
  • 8

    获赞
  • 0

    评论
  • 48

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-3 22:09 , Processed in 0.015718 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部