在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 17540|回复: 10

[求助] 一个使用VCS后仿真的问题,希望大侠可以帮忙,不是太好解决,谢谢:)

[复制链接]
发表于 2011-11-29 19:58:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 joeyuanjoeyuan 于 2011-11-29 20:06 编辑

目前在后仿真时遇到一个问题设计所有寄存器的negtive check,暂以DFCNQD1BWP7T寄存器为例,该寄存器model如下:





  1. `celldefine
  2.   module DFCNQD1BWP7T (D, CP, CDN, Q);
  3.     input D, CP, CDN;
  4.     output Q;
  5.     reg notifier;
  6.   `ifdef NTC
  7. // Reserve for NTC.
  8.     `ifdef RECREM
  9. // Reserve for RECREM.
  10.       wire  CDN_d ;
  11.       buf      (CDN_i, CDN_d);
  12.     `else         
  13. // Reserve for non RECREM.
  14.       buf      (CDN_i, CDN);
  15.     `endif
  16.     wire D_d, CP_d ;
  17.     pullup   (SDN);
  18.     tsmc_dff (Q_buf, D_d, CP_d, CDN_i, SDN, notifier);
  19.     buf      (Q, Q_buf);
  20.   `else
  21. // Reserve for non NTC.
  22.     buf      (CDN_i, CDN);
  23.     pullup   (SDN);
  24.     tsmc_dff (Q_buf, D, CP, CDN_i, SDN, notifier);
  25.     buf      (Q, Q_buf);
  26.   `endif



  27.   // Timing logics defined for default constraint check
  28.   buf  (CP_check, CDN_i);
  29.   buf  (D_check, CDN_i);
  30.   `ifdef TETRAMAX
  31.   `else
  32.     tsmc_xbuf (CP_DEFCHK, CP_check, 1'b1);
  33.     tsmc_xbuf (D_DEFCHK, D_check, 1'b1);
  34.   `endif

  35.   `ifdef TETRAMAX
  36.   `else
  37.   specify
  38.     if (CP == 1'b1 && D == 1'b1)
  39.     (negedge CDN => (Q+:1'b0)) = (0, 0);
  40.     if (CP == 1'b1 && D == 1'b0)
  41.     (negedge CDN => (Q+:1'b0)) = (0, 0);
  42.     if (CP == 1'b0 && D == 1'b1)
  43.     (negedge CDN => (Q+:1'b0)) = (0, 0);
  44.     if (CP == 1'b0 && D == 1'b0)
  45.     (negedge CDN => (Q+:1'b0)) = (0, 0);
  46.     ifnone (negedge CDN => (Q+:1'b0)) = (0, 0);
  47.     (posedge CP => (Q+)) = (0, 0);
  48.     $width (negedge CDN, 0, 0, notifier);
  49.     $width (posedge CP &&& CP_DEFCHK, 0, 0, notifier);
  50.     $width (negedge CP &&& CP_DEFCHK, 0, 0, notifier);
  51.   `ifdef NTC
  52.     `ifdef RECREM
  53.       $setuphold (posedge CP &&& D_DEFCHK, posedge D, 0, 0, notifier,,, CP_d, D_d);
  54.       $setuphold (posedge CP &&& D_DEFCHK, negedge D, 0, 0, notifier,,, CP_d, D_d);
  55.       $recrem (posedge CDN, posedge CP, 0,0, notifier, , , CDN_d, CP_d);
  56.     `else
  57.       $setuphold (posedge CP &&& D_DEFCHK, posedge D, 0, 0, notifier,,, CP_d, D_d);
  58.       $setuphold (posedge CP &&& D_DEFCHK, negedge D, 0, 0, notifier,,, CP_d, D_d);
  59.       $recovery (posedge CDN, posedge CP, 0, notifier);
  60.       $hold (posedge CP, posedge CDN, 0, notifier);
  61.     `endif
  62.   `else
  63.     $setuphold (posedge CP &&& D_DEFCHK, posedge D, 0, 0, notifier);
  64.     $setuphold (posedge CP &&& D_DEFCHK, negedge D, 0, 0, notifier);
  65.     $recovery (posedge CDN, posedge CP, 0, notifier);
  66.     $hold (posedge CP, posedge CDN, 0, notifier);
  67.   `endif
  68.   endspecify
  69.   `endif
  70. endmodule
  71. `endcelldefine


复制代码

后仿环境使用VCS 2009.06,当仿真时不加+neg_tchk选项时,反标时报如下错误:





  1. Warning-[SDFCOM_NNTC] Need timing check option +neg_tchk
  2. /home/yuanq/pnd_bb_chip/simulation/pnd_bb_chip_wcs.sdf, 109222
  3. module: DFCNQD2BWP7T, "instance: tb_bb_psim.U_pnd_bb_chip.u_BD2_Channel.IF_L1_reg_1_"
  4.   SDF Error: Negative RECOVERY value replaced by 0.         
  5.   Add +neg_tchk to consider Negative delay value.


  6. Warning-[SDFCOM_NNTC] Need timing check option +neg_tchk
  7. /home/yuanq/pnd_bb_chip/simulation/pnd_bb_chip_wcs.sdf, 109227
  8. module: DFCNQD2BWP7T, "instance: tb_bb_psim.U_pnd_bb_chip.u_BD2_Channel.IF_L1_reg_1_"
  9.   SDF Error: Negative HOLD value replaced by 0.         
  10.   Add +neg_tchk to consider Negative delay value.


复制代码

为了检查negtive延迟,增加+neg_tchk,反标仍有错误:





  1. Warning-[SDFCOM_NL] Negative Limit on Simple TC
  2. ../../nl/pnd_bb_chip_wcs.sdf, 113120
  3. module: DFCNQD1BWP7T, "instance: tb_bb_psim_max_inf_t.U_pnd_bb_chip.u_BD2_Channel.i_TIMEBASE_GEN.flag_armed_reg"
  4.   SDF Warning: Negative limit cannot be used in simple timing check, it's
  5.   replaced by 0.
  6.   Please use $recrem ..


复制代码

根据寄存器model定义了NTCRECREM以便调用$recrem系统函数,但是定义以上两个宏后仍然报如下错误:





  1. Warning-[SDFCOM_CFTC] Cannot find timing check
  2. ../../nl/pnd_bb_chip_wcs.sdf, 113119
  3. module: DFCNQD1BWP7T, "instance: tb_bb_psim_max.U_pnd_bb_chip.u_BD2_Channel.i_TIMEBASE_GEN.flag_armed_reg"
  4.   SDF Warning: Cannot find timing check $hold(posedge CP,posedge CDN,...)


复制代码

发表于 2011-12-18 10:11:25 | 显示全部楼层
TSMC的库?同问啊!!
 楼主| 发表于 2012-1-30 13:45:19 | 显示全部楼层
回复 2# lixxx333


    这种问题也有同问呀!

    问题已经解决,是pt提取sdf的问题,一是注意pt的版本,二是注意是否输出negetive参数。
发表于 2012-2-23 15:55:10 | 显示全部楼层
回复 3# joeyuanjoeyuan

问一下,哪个版本的PT存在问题?
另外你所说的是否提取Negative参数,是提取还是不提取?
发表于 2012-3-4 17:33:21 | 显示全部楼层
加+neg_tchk选项以后可以注意到"SDF Error"变成"SDF Warning"了。
当然也可以让STA工具写SDF的时候去掉负的timing check, 前提是这些timing没问题,或者你只是在调试阶段。
发表于 2012-3-6 22:35:40 | 显示全部楼层
学习学习~~
发表于 2012-3-6 22:41:25 | 显示全部楼层
学习学习~~
发表于 2012-4-26 13:35:19 | 显示全部楼层
我的sdf文件是用dc生成的。
怎么办?
发表于 2016-1-15 09:57:42 | 显示全部楼层
回复 8# conghung2012


    同问。 我的sdf目前也是dc的  加上neg_tchk 好多错误都没有了 请问为何。、
发表于 2016-9-27 14:57:12 | 显示全部楼层
今天也遇到sdf反标的问题。库里面是$recovery和$removal,但后仿说没找到$hold...
后来找到原因:sdf2.1版本不支持removal,换sdf3.0就好了。
pt的write_sdf加-version 3.0的选项。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-23 01:29 , Processed in 0.025252 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表