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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6853|回复: 13

[求助] DC综合时出现的问题,请大家帮看看?

[复制链接]
发表于 2011-9-20 09:40:22 | 显示全部楼层 |阅读模式

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

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

x
出错的RTL代码如下:
always @ (posedge clk or negedge rst_n) begin
   if (~rst_n || ~arst || ~ena)
       .....................
   else
       .....................
在综合的时候ERROR描述如下:
Error: the expression in the reset condition of the "if" statement in this "always" block can only be a simple identifier
          or its negation。

~rst_n为异步复位信号;
~arst  为同步复位信号;
~ena   为使能信号。
 楼主| 发表于 2011-9-20 14:40:58 | 显示全部楼层
自己顶一下!!期待。。。。。
 楼主| 发表于 2011-9-21 15:13:03 | 显示全部楼层
那位高人来指点下!!
 楼主| 发表于 2011-9-21 17:25:05 | 显示全部楼层
继续顶下!!
发表于 2011-9-21 21:15:09 | 显示全部楼层
回复 1# abao123


always 里面不能用complex condition check
if (~rst_n || ~arst || ~ena)

改成   cond= ~rst_n || ~arst || ~ena;
always ()
if (cond)
...
else
...
发表于 2011-9-22 03:50:33 | 显示全部楼层
怪怪,好像是语法错误啊
 楼主| 发表于 2011-9-22 11:21:30 | 显示全部楼层
回复#5,我觉得是语法错误,因为同步复位怎么可以和异步复位一起来作为判定条件。
我的修改如下:
always @ (posedge clk or negedge rst_n) begin
   if (~rst_n )
   ..............
   else
   ...............   
   if(~arst || ~ena)
       .....................
   else

我是做后端的,请各位指正!谢谢
发表于 2011-9-22 23:25:18 | 显示全部楼层
回复 7# abao123


   没试过同步和异步能不能一起用, 但是always里的判定不能用complex expression,所以您的写法 在dc综合的时候还是会报之前的错的
发表于 2011-9-23 10:36:32 | 显示全部楼层
always @(posedge clk or negedge rstn)
   if(~rstn)                ;异步复位
      data <= 1'b0;
   else if(sync_rst)   ;同步复位
      data <= 1'b0;
   else if(Enalbe)     ;使能信号
      data <= comp;
  else                      ;其他情况
      data <= 1'b0;

这样写比较清晰点,异步/同步复位置位不能混淆,它们有效时间点不同
另外楼上说的欠妥,条件可以是复杂的逻辑,只是条件越复杂延迟相对来说越大
 楼主| 发表于 2011-9-23 13:44:48 | 显示全部楼层
谢谢!感谢大家!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-2-23 17:28 , Processed in 0.022535 second(s), 7 queries , Gzip On, Redis On.

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