求助~~~~~后仿如何在testbench里加入sdf文件,也就是反标问题啦
本人菜鸟,还望各位给予帮助,新手可以一同交流,老手可以互相探讨,高手请给予帮助~
谢谢
顶起来
$sdf_annotate,具体请查阅cadence ncvlog帮助文档。
这个我看了,就是在testbench里加入下面的语句嘛:
initial begin
$sdf_annotate("file.sdf",instance_name,ty_bc_wc)
end
然后问题是不知道这个instance_name应该填什么?
最后是这个语句加入testbench以后,在启动仿真软件的时候还需要加什么选项吗?
instance_name就是需要反标的模块的例化名称; $sdf_annotate是verilog标准中规定的系统任务,直接调用,不需要在仿真中添加额外选项。
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的错;
看看~支持一下
你好!我们现在也遇到了同样的问题呀,请问该怎么解决,谢谢!
(Verilog: testbench.v) Used :
$sdf_annotate("your_file_name.sdf");
Отдельная Аннотации
Этот пример показывает, отдельные аннотации к различным частям проектной иерархии. Существует
файл конфигурации спецификация, поэтому SDF Annotator не использует по умолчанию.
Модуль сверху;
• • •
процессор M1 (i1, i2, i3, O1, O2, O3);
FPU м2 (i4, O1, O3, i2, o4, o5, o6);
DMA м3 (o1, o4, i5, i6, i2);
/ / Выполнить аннотацию
первоначальный
начинать
$ Sdf_annotate ("cpu.sdf", М1, "cpu.log");
$ Sdf_annotate ("fpu.sdf", м2,, "fpu.log");
$ Sdf_annotate ("dma.sdf", м3,, "dma.log");
конец
/ / Стимул и ответ-проверка
• • •
endmodule
Аннотация с массивами экземпляров
Этот пример показывает, массивы экземпляр в иерархии проекта. Там нет файла конфигурации
спецификация, поэтому SDF Annotator использует по умолчанию.
Модуль сверху;
• • •
процессор ар [1] (i1, i2, i3, O1, O2, O3);
FPU ар [2] (i4, O1, O3, i2, o4, o5, o6);
DMA ар [3] (o1, o4, i5, i6, i2);
/ / Выполнить аннотацию
первоначальный
начинать
$ Sdf_annotate ("cpu.sdf", ар [1], "cpu.log");
$ Sdf_annotate ("fpu.sdf", ар [2], "fpu.log");
$ Sdf_annotate ("dma.sdf", ар [3], "dma.log");
конец
/ / Стимул и ответ-проверка
• • •
endmodule
麻烦看一下后面的回复,有关SDF Warning Negative limit cannot be used in simple timing check,it‘s replaced by 0.Please use $recrem这个情况如何解决?
$sdf_annotate("your_file_name.sdf",uut);uut是测试激励中例化被测设计的名称
这个我是知道的,那我想问一下有关$sdf_annotate("typical.sdf",top,,,"TYPICAL",,)这个放入testbench以后做后仿,在typical情况下做出的后仿波形里没有延迟波形出来,是不是因为在用pt生成的时候并没有反标typical情况?因为在pt的时候,我只定义了最坏和最好的环境,而没有说到typical情况的
应该是这样的
那应该如何才能使sdf文件里的(best:typical:worst)这三个数据都存在呢?现在我能做到的是(best::worst)也就是说中间那个数据是没有的,这个应该是在做PT的时候设置的参考环境问题,但是貌似set_operating_condition只能设置min_library和max_library
你这效率 一个问题解决了快2年了 这老板不得跳楼去吗
做学术研讨哈
学习了。学习了
希望学习以后更多的是去讨论
ocv的时候时序貌似会变差,有可能是PR后的时序在ocv下不满足时序(setup/hold)。 不熟,只供参考。
好!
小编你这个问题解决了没,-negdelay加了又说无法解决
没解决。
围观学习一下
又一年过去了。新人表示感觉好迷茫。要学的太多
我也是遇到上面问题,新手求助啊 -netdelay这个选项有何用啊 加上去也没support解决掉。、
您好 我目前用pt做了下 没有时序问题。并且仿真的时候反标sdf的时候没有error和warning 不过最终结果和前仿真不一致 不知道是为啥子呢?
