微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 如何使用Cadence的NCsim进行时序仿真(后仿真)?

如何使用Cadence的NCsim进行时序仿真(后仿真)?

时间:10-02 整理:3721RD 点击:
各位,在进行后仿真的时候,使用Synopsys的VCS进行后仿真没有问题
但是在使用Cadence的NCsim进行后仿真的时候,运行起来仿真进程后,一直提示timing violation
我的$sdf_annotate成功反标,虽然报了一些反标的Warnings。
请问有哪位朋友使用ncsim进行过后仿真吗?可否指点下,谢谢。

我进行的是wc的后仿真,故在ncelab 中已经加入:-MAXDELAYS +neg_tchk +sdf_verbose。
使用VCS进行wc的后仿真的时候,也是这几个选项,仿真运行正确,SDF也已经正确反标。
使用NCsim在进行后仿真的时候,已经产生了 aaa_bbb.sdf.X文件。
但是仿真进程运行起来后,timing violation一大堆。目前怀疑是NCsim和VCS两大仿真器对SDF文件的编译过程是不同的。我的NCsim仿真可能缺少一些选项。

目前常用的后仿真参数选项有:
+pulse_r<arg>
+pulse_e <arg>
+neg_tchk
+transport_path_delays
+delay_mode_path
等等。

我也正在使用NC做后仿,反标之后在ncelab时会报一堆warning,检查这些warning对系统没有影响就不关注了,但是在ncsim时还是会报一些timing violation,仿真结果的确出现了hold time不满足的现象。
我仿的也是worst case,在ncelab时没加-MAXDELAYS +neg_tchk +sdf_verbose命令

那你都用了哪些参数选项,关于时序方面的?

没用其他命令,+neg_tchk命令好像是默认开启的,不需要单独设置, +sdf_verbose命令是保存sdf的Log文件,这个在调用$sdf_annotate系统任务时都指定了保存的log文件。

关键是你报了timing violation之后,相关路径的仿真结果对不对?

+neg_tchk选项在很早之前的NCSIM的版本需要手动打开,但是在后来的版本的版本中是默认enable的。

一般而言,报了很多timing violation之后,仿真结果肯定是错误的了。

你在VCS后仿时没有报timing violation吗?我没试过VCS仿出来是什么结果,但是ncsim仿的确实有问题



我在VCS做后仿真的时候,没有报任何的timing violation,而且VCS的仿真选项配置是和NCSIM是一样的。
所以我现在觉得NCSIM某些选项的默认配置和VCS不同,需要添加特别的参数选项。

现在发现,由于一般的SDF文件都是由Synopsys的PT工具产生的,故对VCS仿真的兼容性支持比较好,而对Cadence的NCSIM仿真器兼容性的支持不够好。

我发现我报的timing violation全是仿真开始复位阶段出现的,复位之后报的只有异步时钟域上的伪路径时序问题(可以忽略),跑了一两个用例还没出错

复位状态的timing 问题是可以忽略的。
你复位后的“异步时钟域上的伪路径时序问题”是什么一个情况?能贴上来看看嘛?

你好!我现在也遇到了同样的问题,是综合后仿真出现的。请问这个问题现在你解决了吗?我用的是ncsim来仿的

现象是什么样的?一般timing violation如果是异步信号输入产生的,需要屏蔽这条路径的timing check,例如异步复位信号,这种timing violation是可以忽略的,因为其本身是异步的,逻辑里会做同步处理

你好!我的是输入信号的问题:上升沿触发的寄存器的D和CLK都是直接连到外部的,在testbench里D是在CLK上升沿才变化的,综合后带sdf参数仿真的时候,发现这个寄存器总是有timingviolation,因为D和CLK变化几乎同时,不满足setup timing。请问这个问题我该怎么解决呢?是不是应该在testbench里将D改成在CLK下降沿变化,这样寄存器在上升沿就可以正常读了?如果都是上升沿变化该怎样仿真或者综合才不会有timing violoation呢?

你的D和CLK是外部输入,它们之间其实是异步,你让它们同沿只是最理想的情况,实际电路里这俩既可能同沿,也可能有延迟。所以CLK直接采外部的输入D,可能会出现不定态,逻辑上要做同步处理。如果已经对这一级DFF后面的逻辑做了同步处理,那么这第一个输入DFF的timing check就要屏蔽,不让仿真工具去check它,我记得ncsim里面用的是-tfile命令

非常感谢你的回答!我的输入的D其实是从外部FPGA内的reg给的,是和CLK同步的,而且实际应该比CLK上升沿变化稍微晚一点。我现在把D改成在CLK下降沿处变化,这样我的芯片在CLK上升沿就可以读取D了,请问这样可以吗?是不是就不需要屏蔽timing check了?

你是FPGA设计么?如果D与CLK是同步的,D是CLK的上升沿launch那么只要CLK频率不是特别快,D路线不是特别长,CLK的下降沿采样D是可以满足建立保持时间的 ,不过要考虑CLK的频率,还有violation的slack大小。
在FPGA设计里因为资源有限的问题,逻辑太大会造成路径很长,因为局部资源占满了,工具只能往远的地方布置,导致路径延迟变大。所以解决timing violation,改逻辑是个有效的方法。



谢谢!我是设计ASIC的,不过ASIC的输入是由FPGA给提供的。原本想设计成上升沿同时launch和capture的,但是仿真总是不对。现在没办法,改成了FPGA上升沿launch,ASIC下降沿capture。请问有没有办法能设计出上升沿同时launch和capture的?

明白你的意思了,ASIC做为接收端,你用下降沿Capture只要满足功能就可以这么做。还有一种方式是ASIC侧仍然上升沿采样,不过在FPGA侧做timing constraints,使得D与CLK下降沿对齐,这样虽然FPGA代码里D与CLK是同沿的,但是从FPGA输出来的D与CLK是移相180度的,这样ASIC侧用上升沿采样即可。所以ASIC这边怎么设计都可以,让FPGA开发人员去适应ASIC就行。

恩恩,你说的很有道理。如果想要让FPGA这边上升沿输出,ASIC这边也是上升沿采样该怎么办呢?是给ASIC加timing constrains还是给FPGA加?小弟刚入门,属于大白,求教了!谢谢!

在FPGA里做约束

学习了

akjdaljdajflajalkjjlkjld

你好,我正在使用irun进行后仿,以前都是用vcs比较多,对irun不是很熟悉。
我现在想把一些路径的timing check屏蔽掉,看你的意思是有一个叫-tfile的选项?能不能详细说明一下呢?
谢谢!

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

网站地图

Top