后仿问题大合集!相信很多过来的朋友都碰到过,希望大家多多交流~~~共同进步
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的仿真,不知道这算是前还是后
