电子说
主要内容:如何用dbShape并显示dbShape运算之后的结果
我们可以在Innovus中通过dbShape来对一些shape进行几何运算,比如OR AND XOR等,这些对于我们写一个版图上Check的custom tcl或者基于版图的分布情况生成一些Placement/Routing blockage等等是非常有帮助的。比如星球分享过的:
如何写脚本检查设计中是否Missing filler(也就是std cell之间存在gap)问题,并且将Error显示在Error browser中?
那么对于运算之后的结果,我们如何将它显示出来呢?
我们可以通过add annotation的方式来完成,在ICC2里面命令是gui_add_annotation,在Innovus里面是add_gui_shape,示例如下:
两个图形直接做OR运算之后得到的是一个polygon,是不能直接用add_gui_shape -polygon来实现的,因为两者格式不一样,感兴趣的可以试一下就知道了,下面给出一个解决方案:
可以把polygon里面的多个rect来分别显示出来,也就是用多个rect拼起来显示出polygon的形状:
foreach i [dbShape $shape1 OR $shape2 -output rect] {add_gui_shape -rect $i -layer xxx}
效果如下图所示: 如果你觉得出来的结果是空心的不方便看,那么还可以通过下面的命令来修改显示的pattern和线宽
setLayerPreference xxx -color yellow -lineWidth 9 -isVisible 1 -stipple Cross
现在你可以思考一个问题,我们如何计算上面运算结果的多边形Shape的面积呢?应该用什么命令呢? 你可以自己思考探索一下。
下面公布结果:
答案还是dbShape命令:
[DEV]innovus 6> dbShape $shape1 OR $shape2 -output area 28
任何dbShape运算产生的多边形都可以用上面或者下面的方式来得到它的面积:
[DEV]innovus 7> dbShape [dbShape $shape1 OR $shape2] -output area 28
和真实面积是吻合的:4*4*2-2*2=32-4=28
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !