微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 后仿问题大合集!相信很多过来的朋友都碰到过,希望大家多多交流~~~共同进步

后仿问题大合集!相信很多过来的朋友都碰到过,希望大家多多交流~~~共同进步

时间:10-02 整理:3721RD 点击:
1、大致流程描述一下:PR完成数字layout以后提取出spef文件,将此SDEF文件导入PT,PT脚本里特别注意使用的是OCV模式,然后读spef文件用的语句是“read_parasitics -pin_cap_included -increment xxx.spef”(此语句是否有问题还望大家给予一个讨论结果);以此write_sdf xxx.sdf文件,在跑此脚本查看log文件可以看到很多warning是有关setup and hold values in the cell xxxx is negative,等等一连串的警告,这个问题应该如何解决?是否可以通过write_sdf这个指令去改变?(这个问题也希望有过流片经验的大神们给予交流和讨论)
2、在1流程里如果改变模式使用bc_wc模式,其他都一样(当然也是PR以后进行后仿),而此时跑write_sdf指令出sdf文件,此时是没有任何的warning的,问题:为什么用OCV模式和bc_wc模式有这么大的差别?对于这两种情况应该如何选择?
3、进行VCS后仿的时候,在testbench里加入用OCV模式产生的sdf文件即:$sdf_annotate("xxx.sdf",xxx,,,"TYPICAL",,),然后跑TYPICAL情况,很顺利后仿波形和数据都跟前仿一样。但是当我们跑“MAXIMUM”和“MINIMUM”这两种情况的时候,却产生了很多的SDF Error,错误的内容就是Negative RECOVERY (或者SETUP) value replaced by 0。Add +neg_tchk to consider Negative delay value.还有几个SDF Warning:Negative delay is ignored and replaced by 0.Please use -negdelay to support it.过后照着它的要求在vcs启动运行里添加了+neg_tchk和-negdelay这两个选项再跑,此时只有两个warning了,分别是SDF Warning:Negative limit Cannot be used in simple timing check,it's replaced by 0.Please use $recrem.还有一个为:SDF Warning:Negative IOPATH Delay A1 to ZN is replaced by 0.This negative value cannot be handled with switch -negdelay.Please check SDF files.对于两个警告不是太理解,也不知道怎么办了,所以就搁置在这儿了,还望大家看看,有没有办法去解决?
4、使用bc_wc模式也是同样的问题,跑TYPICAL可以顺利通过,但是MAX和MIN都不行,也是报的3问题里的错,这样的警告也导致了后面跑VCS的时候报出了很多Timing Violation的错;
对于以上问题我想应该是很多做前端工作的同行们遇到过的问题,拿出来跟大家系统的讨论交流一下,还望小编也能一起交流和沟通一下,大家共同学习吧~

自己顶起了~期待高手啊

自己多顶顶吧~求解脱了

我很少做后仿的



    很少做?后仿是最后tapout的最关键的步骤啊

顶起~



    我主要做fpga的



    FPGA也是有后仿的~只是做法不同而已

顶起来

同遇到第三个问题
$recrem那个warning应该是sdf file的version不对 VCS支持$setup $hold $setuphold $recrem里面的负值 但是不支持$recovery $removal 里的负值 你给VCS的sdf应该是2.1版本的 因为$recrem是3.0版本的 试一下用PT产生3.0的sdf吧 还有你用在VCS里的verilog library 也应该是3.0版本的 如果还报warning就不知道为什么了



    好的,很感谢你的回复,我马上试试看看

OCV模式更加消极(negative)。bc_wc用最大path延时检查setup time。最小path延时检查hold time。OCV检查setup的时候相同的路径launch path用max data path,latch path用min clock delay。检查hold的时候则相反。所以是对于同一条路径采用了更加消极的分析方式,所以这两个模式下的结果会不一样。



    这个我也知道,一般OCV模式用于处理<=90nm的设计,而我这次设计的项目是250nm的所以还是可以用bc_wc模式的对吧?现在的问题还希望兄台再看一次,我在bc_wc模式和ocv模式下都出现了一些相类似的问题

自己多顶顶~说这个问题还是希望大家重视

Separate Annotations
----------------------
This example shows separate annotations to distinct portions of a design hierarchy. There is
no configuration file specification, so the SDF Annotator uses the defaults.
module top;
•••
cpu m1(i1,i2,i3,o1,o2,o3);
fpu m2 (i4,o1,o3,i2,o4,o5,o6);
dma m3(o1,o4,i5,i6,i2);
// perform annotation
initial
begin
         $sdf_annotate("cpu.sdf",m1,,"cpu.log");
         $sdf_annotate("fpu.sdf",m2,,"fpu.log");
         $sdf_annotate("dma.sdf",m3,,"dma.log");
end
// stimulus and response-checking
•••
endmodule
Annotation with Arrays of Instances
------------------------------------
This example shows arrays of instance in a design hierarchy. There is no configuration file
specification, so the SDF Annotator uses the defaults.
module top;
•••
  cpu ar[1](i1,i2,i3,o1,o2,o3);
  fpu ar[2](i4,o1,o3,i2,o4,o5,o6);
  dma ar[3](o1,o4,i5,i6,i2);
  // perform annotation
  initial
  begin
         $sdf_annotate("cpu.sdf",ar[1],,"cpu.log");
         $sdf_annotate("fpu.sdf",ar[2],,"fpu.log");
         $sdf_annotate("dma.sdf",ar[3],,"dma.log");
  end
  // stimulus and response-checking
•••
endmodule

dingding

虽然很久之前的帖子,但是还是很有讨论的价值的,本人也遇到类似的问题,SDF的3.0版本里$setuphold和$recrem支持SDF里的negative delay,但是IOPATH negative delay要怎么解决,还望高手指点

顶起来。

为什么还要搞前仿真和后仿真呢?我只使用TIME的仿真,不知道这算是前还是后

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top