关于使用ECO的问题以及mem的约束
在encounter中观看时钟结构时发现外部时钟源经由buf1。再到分频电路等等最后到芯片内部时钟端点。对比两个工具还发现,对于其他一些standard cell的transition和capacitance都差不多,就是在传播时钟路径上有将近1ns的差别。所以我认为这是由于互连线上的延时引起的。可能是spef存有偏差的原因。在user guild上看到说需要进行qrc来比较rc参数的相关性,之后将star-rc抽取时的scaling factor设置成这个相关性便可以解决这两个工具之间的差别。但是目前我手头没有qrc文件。
所以,我想通过ckECO或者通过Interactive ECO Command来操作。不知道这样可行不?
为了消除in2reg的hold违规,我希望增大时钟源处的buf驱动强度,将buf1替换成更大驱动强度的buf2。我适应ckECO改变单元,但是提示说次数cktree喂fixed状态,不能操作,如果我想进行替换操作,是不是需要使用changeclockstatus,但是我不知道这个changeclockstatus该怎么操作?我感觉是应该使用这里的nofixedbuffer,但是我不知道怎样把这个nofixedbuffers的对象设置成我这里的buf1。如果使用ckECO的话,是怎么操作,如果使用Interactive ECO Command的ecochangecell又该怎样操作?
2、顺便问一个memory约束设置的问题,如果一个设计中的mem时钟和与mem进行通信的逻辑单元的时钟不一致,这个时候由于mem读出的数据通常是在mem时钟之后将近20ns才稳定输出。这时,如果与mem进行通信的外部逻辑单元对这个mem的输出信号怎么约束呢?这里的mem出来的信号相当与外部逻辑电路应该是异步信号吧?这时候好像在pt中报路径也不好报吧!大家这种情况怎么进行约束的?是进行多周期设置。还是进行false path?抑或是其他的设置?
求解答!
还有一个memory的问题啊,最近在综合时使用mbist发现在建立mbist时,生成了一个control_tb的文件,我猜测个文件应该是测试平台,不知道是不是?
看了下其代码,感觉它是来自自己建立的那个时序模型。但是发现它的initial 模块中的那些输入定义中有一些地方看的我很不明白,比如其中一段为CK_0 =1'b0; CK_0=1'b1;之后接着才是#(CLK_PERIOD/2)CK_0=1'b0,这里为什么在同一时刻会出现CK_0 =1'b0; CK_0=1'b1的现象。很是不解。所以先想搞清楚这个tb文件的含义,其次这里面的这个CK_0 =1'b0; CK_0=1'b1该怎么解释。
挺好,搭车:
我最近摆弄了一下以前完成的一个项目,结果在soce的timing report中setup的vio达到了0.9ns,而同样的sdc文件,在pt的时候,却只有0.4ns,其中也涉及到了pad->pll->mux的问题,还在研究中
选你个clock buffer,按q,在跳出的窗口里面改fixed为placed,再eco,改好后,把placed属性再改回fixed
我很好奇,Cadence的encounter里面会自带Synopsys的star-rc
banzhu xili!
哦,是这样操作的啊!那么请问怎么样在soc encounter的图形窗口中快速的找到自己所说的那个clk buffer呢?有没有类似与office中的那种search功能,因为,在众多的cell中找到需要的cell还是一件很繁琐的事情,不知道大家有没有好的方法?
console里面打 : selectInst或者 selectInstByCellname
然后 zoom to Selected, 不记得快捷键了,
谢谢楼上的解释,试试看!