先介绍PyCell Studio,PyCell Studio使用的开源的Python 程序语言生成OA的database的pcell 工具。创建的pcell可以支持多种EDA tool,Python API提供了非常丰富的类和方法用来创建layout的pcell。因为使用的开源python所以很容易进行拓展,入门也非常方便。
Custom compiler 的UDD (user define device)的功能背后就是利用了pycell studio的进行编译出pcell。我们也可以基于UDD 生成的基础pcell 的python code 框架 ,然后进一步直接python开发。
你可以从custom compiler的安装目录下找到相关的技术文档和tutorial资料数据。
可以按tutorial的文档一步步测试。PycellStudio也提供了debug和python IDE 供debug和python code 开发。
下面是我做的一个小示例(金属电阻)来演示生成pycell的过程。
首先创建在pyCode目录下面创建 __init__.py,如果有多个cell compiler到lib里,可以在这里添加完整。如下是powerMOS 和MyRect cell 。
这里是rect.py 对应代码:
结构比较简单,定义parameter信息,然后根据parameter值生成对应shape。下面这里是编译的command,在terminal中执行即可。
cngenlib --update --no_core_dlos --bundle=encrypted_source pkg:pyCode test_gr ./test_gr
pkg:pyCode 后面是所有python code的文件夹, test_gr是编译出的pcell 导入的lib 后面对应lib的path。
如上就可以生成MyRect 这样的pcell了,为了配合使用我们可以 对应创建一个symbol,方便调用。保持跟pcell 中的pin名称对应一致一端为in 另一端为out。
我们可以看到从电路上可以直接pick出这个自定义的pcell了,并且pcell 中定义的两端pin也会自动带上电路上的net信息。
如果想要导出cdl 中也有要对应导出,还需要在CDF 里设置auCdl相关定义。
到这里pcell layout已经好了,其实还有个问题,因为金属宽度不能无限制,所以还需要添加callback函数。当输入大于某个值时,要强制设成max width上。
如何添加callback函数,等后面章节再来介绍。
下面是一个基于UDD的pcell框架,利用python的二次开发的POWER MOS。是个比较复杂的pcell,采用ESD rule的画法,把一些常需要调整的地方做成参数化。主要是因为要实现的场景组合非常复杂,如果全部使用UDD来开发会生成非常多的步骤debug起来也不是很方便。但是如果直接用Python来做的,可以通过判断重复调用减少很多重复的步骤。代码结构也比较清晰。我们在compiler UDD 的时候cc 会自动带出来对应的python code。可以基于这个code 来添加修改。
添加了各层金属方向的parameter,使用上非常灵活,需要什么方向的走线组合都可以实现。
作为python的小白,能很短时间内完成上面这些pycell,感觉还是很棒的。给后面可能遇到的问题提供一些新思路。pycell studio里提供的Python API有很多示例对于新手来说是很不错的借鉴。
一篇参考文章 https://m.baidu.com/from=1001192y/bd_page_type=1/ssid=0/uid=0/pu=usm%402%2Csz%401320_1001%2Cta%40iphone_2_12.0_28_15.0/baiduid=23C707302017DF409F6833AAA71DA490/w=0_10_/t=iphone/l=1/tc?clk_type=1&vit=osres&l=1&baiduid=23C707302017DF409F6833AAA71DA490&t=iphone&ref=www_iphone&from=1001192y&ssid=0&lid=10137191966106613923&bd_page_type=1&pu=usm%402%2Csz%401320_1001%2Cta%40iphone_2_12.0_28_15.0&order=8&fm=alop&isAtom=1&waplogo=1&clk_info=%7B%22tplname%22%3A%22www_index%22%2C%22srcid%22%3A1599%2C%22jumpType%22%3A%22%22%2C%22urlsign%22%3A%2213741621364725304918%22%2C%22t%22%3A1717902884216%2C%22xpath%22%3A%22div-article(sc_ala)-section-div2(pure-summary)-div-div-div(abstract)-div-div%22%7D&dict=-1&otn=1&is_baidu=0&tj=www_index_8_0_10_title&m=8&cltj=normal_title&asres=1&phoneos=bd_search_iphone&title=PyCellsforanOpenSemiconductorIndustry&wd=&eqid=8cae8a624fba78a31000000566651e1d&w_qd=IlPT2AEptyoA_yipFUCcJy6srB0CNaih&bdver=2_1&tcplug=1&sec=39195&di=62845f5101a2f2ea&bdenc=1&nsrc=MPVuiyP2%2FveSbdc5oUQfUQxn3QiAB4OI2cSXQEY5Ddgpoe5RMgv%2FNT57WpJpT8q0a9KNexaR6s7tKjriUcutxcUa%2Fwf0PwR83c7xor%2Bt4Fc%3D&ck0=519&ck1=74&ck2=205&ck3=271&ck6=7&ck7=327&ala_anti=ck0%40519%2Cck1%4074%2Cck7%40327