在design中,一个模块会在不同的module进行多次引用或者说实例化。uniquify 就是在设计中使子模块的实例和子模块的定义一一对应,消除一个模块的定义被多次引用的现象。具体实现方法就是,uniquify 命令会将多次引用的模块的个数拷贝需要的数目,然后对他们分别命名而得到不同的模块名。
如果Non_uniquified 网表,多次实例化模块在网表中只有一个定义,而多次引用同一定义的各个实例内部的flop都需要各自的时钟,从而时钟树上这些模块的clock_net名是不同的,来自layout 工具的时钟树的信息和DC中原网表无法对应,所以会出现两个不同的net和一个相同的port连结,这是不允许的。[1]
DC 会认为存储区中的模块都只是被引用一次的,uniquefy之后,如果各个模块的引用的工作环境各不相同,则使用这种方法可以使得模块的各个引用可以针对他们不同的环境分别进行优化,达到最好的效果。
DC 中compile_ultra会自动进行uniquify。
command:uniquify
reference: