随着设计规模越来越大,工艺尺寸越来越小,设计里含有的via也越来越多。特别是PG via,当PG via数量达到一定规模数量时,runtime,memory usage,和disk usage用都会受到一定程度的影响。

 

为了减少巨量PG VIA带来的影响,ICC2用via matrix来解决这个问题。

以前,ndm的via是一个一个独立存在的。假设设计里有10M的via,那ndm里要存一千万个via对象。假设一个via对象占50Byte,那10M的via就要使用500M Byte的disk/memory空间。

via matrix,顾名思义,将独立的孔合成一起成为一个矩阵,只有一个对象。这样将大大减少disk/memory的使用,也会一定程度上加速runtime

 

举个栗子。

下图是传统的方法,pg via是独立的。

 

 

icc2_shell> sizeof_collection $via2

14878512 (设计里有14M的VIA2)

c_shell> du -sh *

354M    placed

 

现在将PG VIA2用一个命令转换成via matrix

icc2_shell> convert_vias_to_via_matrix-verbose $via2

{VIA_MATRIX_0}

现在成了这个样子:

 

 

现在via已经变成了matrix了,随意点击其中一个via,会发现所有的via都被选上了,因为这是个matrix,是个整体

 

这时,可以看看硬盘空间的变化

icc2_shll> save_block -as placed_via_matrix

c_shell> du -sh *

296M    placed_via_matrix

 

单单把PG via2改成matrix,硬盘空间就可以节省58M(从354M减少到296M),比例也非常的高。如果把所有的pg via都改成matrix,那将节省更多的disk/memory。

 

和via matrix相关的命令都有:

icc2_shell> help *via_matrix*

 convert_via_matrixes_to_vias # Converts via matrixes to vias

 convert_vias_to_via_matrix # Converts vias to via matrix

 create_via_matrix    # Create a via matrix

 edit_via_matrix      # edit a via_matrix

 get_via_matrixes     # Creates a collection of via matrixes

 remove_via_matrixes  # Removes via matrixes

 report_via_matrixes  # Report via matrix information

 

可以退回去吗?

转换成matrix后,就不能单独操作其中某个via了,因为是个整体了。如果还需要操作某些via,我们可以用另一个命令把matrix转换成独立的via

convert_via_matrixes_to_vias

 

 

 

还可以把零碎的PG拼在一起

 

一般来说,PG shape都是连续的。但是有时候也会出现好几个shape拼在一起的情况。这个时候,我们也可以用merge_pg_mesh这个命令将几个shape合成一个,同样的可以节省memory/disk usage和runtime。

 

posted on 2020-03-27 17:10  春风一郎  阅读(610)  评论(0编辑  收藏  举报