找回密码
 注册
关于网站域名变更的通知
查看: 164|回复: 1
打印 上一主题 下一主题

教你如何判断自己写的代码是可综合的?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-10 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
教你如何判断自己写的代码是可综合的?
( \: F+ R: m" W5 ~

1 P, d# Z7 }; J/ `5 m 用一句简单的话概括:电脑永远没有你聪明。具体来说,通常EDA软件对HDL代码的综合能力总是比人差。对于一段代码,如果你不能想象出一个较直观的硬件实现方法,那EDA软件肯定也不行。比如说,加法器、多路选择器是大家都很熟悉的电路,所以类似A+B-C,(A>B)?C这样的运算一定可以综合。而除法、开根、对数等等较复杂的运算,必须通过一定的算法实现,没有直观简单的实现方法,则可以判断那些计算式是不能综合的,必须按它们的算法写出更具体的代码才能实现。此外,硬件无法支持的行为描述,当然也不能被综合(比如想在FPGA上实现DDR内存那样的双延触发逻辑,代码很容易写,但却不能实现)。  N" c  [4 l7 ]5 _+ @: g

: Z/ Q4 Q4 v( {8 b$ n. k2 }
& s* p7 \! t$ r% c   不过,这样的判断标准非常主观模糊,遇到具体情况还得按设计人员自己的经验来判断。如果要一个相对客观的标准,一般来说:在RTL级的描述中,所有逻辑运算和加减法运算、以及他们的有限次组合,基本上是可综合的,否则就有无法综合的可能性。当然,这样的标准仍然有缺陷,更况且EDA的技术也在不断发展,过去无法综合的代码或许将来行,某些软件不支持的代码换个软件或许行。比如固定次数的循环,含一个常数参数的乘法运算等等,有些EDA软件支持对它们的综合,而有些软件不行。
7 W' f* z; [$ a" ~6 d
6 K1 \( F8 ?6 v0 A  E6 D0 Z" R  n
, b; Q5 D- n, `0 J: h所以,正确的判断仍然要靠实践来积累经验。当你可以较准确判断代码的可综合性的时候,你对HDL的掌握就算完全入门了。0 S) i+ M$ Z2 p8 f+ ?) N
' J; n3 r% c' @% X* s- |3 z' Y% X

该用户从未签到

2#
发表于 2019-5-14 18:11 | 只看该作者
这个方法不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 04:29 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表