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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4572|回复: 17

[讨论] 讨论一个代码问题,涉及前后端,验证

[复制链接]
发表于 2014-1-19 10:28:14 | 显示全部楼层 |阅读模式

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

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

x
我们在设计代码时有两种写法:
1:
always@(*) begin
      
if(a==1'b1 && b==1'b1 && c==1'b1)

out = 1'b1;
        else

out = 1'b0;
end


2:
always@(*) begin
      if(a==1'b0)
           out = 1'b0;
      else if(b==1'b0)
           out = 1'b0;
      else if(c==1'b0)
           out = 1'b0;

       else

out = 1'b1;
end


1和2在写法上有不同:

1的话条件多,很多时候不便于分析,当条件名字长和多时,要几行才能写下来时。

2的写法比较便于分析,但是代码行数多。

1在仿真时,条件覆盖率比较难。

2在仿真时,条件覆盖率不是问题。

1和2在逻辑级数上是一样的。


现在想讨论下

1:两个写法在仿真上是还有那些不同?比如那个更占资源?边界条件覆盖上有那些区别?

2:在synophsys的工具中哪一种写法支持比较好?DC?

3:1和2在逻辑实现上是否一致?或者那个更优?

4:大家更支持哪种写法?
发表于 2014-1-19 16:13:48 | 显示全部楼层
看工具。。代码检视优于技巧。面积不是绝对。。。
发表于 2014-1-19 16:19:49 | 显示全部楼层
生成的电路结构不一样吧
 楼主| 发表于 2014-1-19 17:35:43 | 显示全部楼层
呵呵,,大家继续看看
发表于 2014-1-20 10:41:04 | 显示全部楼层
要是我的话会这样写
always@*
if ({a,b,c}==3'b111)
out =1'b1;
else
out=1'b0;
发表于 2014-1-20 13:02:08 | 显示全部楼层
>>1的话条件多,很多时候不便于分析,当条件名字长和多时,要几行才能写下来时。
>>2的写法比较便于分析,但是代码行数多。
这个个人觉得未必。1完全可以写成if (a&b&c),就不长了。2如果if else嵌套得很多的话,分析也很累的。

>>1在仿真时,条件覆盖率比较难。
>>2在仿真时,条件覆盖率不是问题。
这个1和2应该是一样的,个人觉得。

>>1:两个写法在仿真上是还有那些不同?比如那个更占资源?边界条件覆盖上有那些区别?
>>2:在synophsys的工具中哪一种写法支持比较好?DC?
>>3:1和2在逻辑实现上是否一致?或者那个更优?
如果用dc+ compile_ultra的话,应该是完全一样的。

>>4:大家更支持哪种写法?
事实上我个人更支持assign out=a&b&c;
为了前后仿一致,尽量别用if else去表达组合逻辑。
发表于 2014-1-20 17:56:45 | 显示全部楼层
大部分的时候,优化都靠综合器综合了
code的要求越来越低了,但逻辑性一定要对
发表于 2014-1-21 11:08:49 | 显示全部楼层
综合下,发现两种写法的DC综合结果都是一样的。
电路结构完全一样。
第一个.jpg
发表于 2014-1-21 11:26:49 | 显示全部楼层
同意6楼
发表于 2014-1-23 16:27:40 | 显示全部楼层
工具蛮智能的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-17 04:53 , Processed in 0.025968 second(s), 9 queries , Gzip On, Redis On.

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