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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5326|回复: 19

[求助] 求助VCS仿真gatelevel

[复制链接]
发表于 2021-2-3 23:45:08 | 显示全部楼层 |阅读模式

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

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

x
RTL在modelsim和vcs仿真都正常,在DC里综合后输出门级网表,fm是通过的没有错误。然后配合的smic18.v的库,编译后,不管加不加sdf文件,加不加notimingcheck都是复位后几个时钟后里面寄存器就逐个变不定态了,这个是哪的原因呢?小弟卡在这好几天了
发表于 2021-2-4 00:19:39 | 显示全部楼层
选一个有问题的寄存器,把该寄存器的 D, CLK, RSTN or PREN,Q 波形贴出来,就容易判断了。 看一下库里寄存器的模型有没有 clk-to-q delay。估计模型里需要某个 define,仿真命令行没加
 楼主| 发表于 2021-2-4 01:33:28 来自手机 | 显示全部楼层


jake 发表于 2021-2-4 00:19
选一个有问题的寄存器,把该寄存器的 D, CLK, RSTN or PREN,Q 波形贴出来,就容易判断了。 看一下库里寄存 ...


感谢回复,请问即使我加了notimingcheck 依然不能完全屏蔽厂家库里的关于时序的部分吗?
发表于 2021-2-4 03:06:35 | 显示全部楼层


althars 发表于 2021-2-3 11:33
感谢回复,请问即使我加了notimingcheck 依然不能完全屏蔽厂家库里的关于时序的部分吗? ...


看一下库里的寄存器的 Verilog model,也许 notimingcheck 只是选择 setup, hold 要求为 0。 这也是为什么要看波形去理解 model   

 楼主| 发表于 2021-2-4 08:53:00 | 显示全部楼层


jake 发表于 2021-2-4 03:06
看一下库里的寄存器的 Verilog model,也许 notimingcheck 只是选择 setup, hold 要求为 0。 这也是为什 ...


`timescale 1ns/1ps
`celldefine
module SDFFHQX1 (Q, D, SI, SE, CK);
output Q;
input D, SI, SE, CK;
reg NOTIFIER;
supply1 xRN, xSN;
supply1 dRN, dSN;
  buf     IC (clk, CK);
  udp_dff I0 (n0, n1, clk, xRN, xSN, NOTIFIER);
  udp_mux I1 (n1, D, SI, SE);
  buf     I2 (Q, n0);
  and     I4 (SandR, xSN, xRN);
  and     I5 (SandRandSE, SandR, SE);
  not     I6 (SEb, SE);
  and     I7 (SandRandSEb, SandR, SEb);
  xor     I8 (DxorSD, D, SI);
  and     I9 (flag, DxorSD, SandR);
  specify
    specparam
      tplh$CK$Q = 1.0,
      tphl$CK$Q = 1.0,
      tsetup$D$CK = 1.0,
      thold$D$CK = 0.5,
      tsetup$SI$CK = 1.0,
      thold$SI$CK = 0.5,
      tsetup$SE$CK = 1.0,
      thold$SE$CK = 0.5,
      tminpwl$CK = 1.0,
      tminpwh$CK = 1.0;
// path delays
    if ( SandRandSEb )
      (posedge CK *> (Q    +: D)) = (tplh$CK$Q,    tphl$CK$Q);
    if ( SandRandSE )
      (posedge CK *> (Q    +: SI)) = (tplh$CK$Q,    tphl$CK$Q);

// timing checks
    $setuphold(posedge CK &&& (SandRandSEb == 1), posedge D, tsetup$D$CK  ,thold$D$CK  , NOTIFIER);
    $setuphold(posedge CK &&& (SandRandSEb == 1), negedge D, tsetup$D$CK  ,thold$D$CK  , NOTIFIER);
    $setuphold(posedge CK &&& (SandRandSE == 1), posedge SI, tsetup$SI$CK, thold$SI$CK , NOTIFIER);
    $setuphold(posedge CK &&& (SandRandSE == 1), negedge SI, tsetup$SI$CK, thold$SI$CK , NOTIFIER);
    $setuphold(posedge CK &&& (SandR == 1), posedge SE, tsetup$SE$CK, thold$SE$CK , NOTIFIER);
    $setuphold(posedge CK &&& (SandR == 1), negedge SE, tsetup$SE$CK, thold$SE$CK , NOTIFIER);
    $width(negedge CK &&& (SandR == 1), tminpwl$CK, 0, NOTIFIER);
    $width(posedge CK &&& (SandR == 1), tminpwh$CK, 0, NOTIFIER);
endspecify
endmodule // SDFFHQX1
`endcelldefine

这个是这个寄存器的代码,它的波形我正在研究怎么弄出来

 楼主| 发表于 2021-2-4 08:59:59 | 显示全部楼层


jake 发表于 2021-2-4 03:06
看一下库里的寄存器的 Verilog model,也许 notimingcheck 只是选择 setup, hold 要求为 0。 这也是为什 ...


感谢帮助!代码还在审核,这个是波形:
微信截图_20210204085811.png
 楼主| 发表于 2021-2-4 09:02:22 | 显示全部楼层
这个是reg的verilog:
微信截图_20210204090142.png
发表于 2021-2-4 09:26:34 | 显示全部楼层


althars 发表于 2021-2-3 19:02
这个是reg的verilog:


这个 model 有个默认的 CK-to-Q delay,1.0。 不知道单位是 ns 还是 ps。 model Verilog 文件开头有没有 `timescale?  其他组合逻辑门有这个 1.0 的延时吗? 估计是有的。在波形里量一下寄存器时钟到输出是否是 1.0ns。1.0ns 延迟偏大了。

SDF annotate 如果正确的话这个 CK-to-Q delay 应该不是 1.0

发表于 2021-2-4 09:34:24 | 显示全部楼层


althars 发表于 2021-2-3 18:59
感谢帮助!代码还在审核,这个是波形:


我眼神不太好,貌似这个寄存器 D 先变成 X, 造成该寄存器 Q 随后变 X。
要往上游查,找到最先变成 X 的那个寄存器。
你贴的寄存器 Verilog model 是不带复位的。 设计中的寄存器是否都是不带复位的?应该不是。 感觉像是某个寄存器复位有问题,复位后成了 X, 随后 X 被一路传递下去到了其他寄存器。

 楼主| 发表于 2021-2-4 09:34:31 | 显示全部楼层


jake 发表于 2021-2-4 09:26
这个 model 有个默认的 CK-to-Q delay,1.0。 不知道单位是 ns 还是 ps。 model Verilog 文件开头有没有  ...


有没有办法屏蔽掉这些只是单纯的把cell当成理想模型来仿真呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-26 20:50 , Processed in 0.025626 second(s), 7 queries , Gzip On, Redis On.

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