即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Coding &Timing 小例子

微信 FPGA那点事儿 14℃ 0评论

FPGA工程师都知道coding timing 息息相关,所以为了达到FPGA更好的timing ,工程师都会有学习优秀的codingstyle。本小结举一个浅显的例子,描述coding Timing的影响。



1.原始代码和综合后结果


原始代码比较简单,是一个状态机;状态机的跳转通过定时器timer来判断完成;逻辑上state每当跳变一次,都需要判断timer计数器的值。且timer8位的计数器,需要两级LUT来完成。

2.修改后的代码和综合结果


可以看到这里主要是将timer8位比较器移除,单独列出一个时钟周期;这样state状态转移控制信号只需要判断1bit即可。

 

Design #1

Design #2

% Diff

LUT Cnt

42

38

-10%

FF Cnt

35

42

+20%

Slice Cnt

14

15

+7%

Fmax

232MHz

285MHz

+23%

3. 修改前后的资源、时钟频率对比


可以看到,稍加对代码的修改就可以影响很大的timing结果。当然工程师也需要仿真修改前后代码的延迟。

在代码允许修改的前提下,对代码本身的修改影响远远比尝试不同工具策略、选项、种子大,这也是最为直接的办法。如果工程师在coding的同时可以分析出综合结果,那么代码的质量一定是很优秀的,这也是工程师设计能力的一种体现。优秀的代码质量在design复杂度、资源占用率较高时尤为重要。


注:版权归“FPGA那点事儿”运营团队,转载请注明出处。


欢迎扫描以下二维码,关注“FPGA那点事儿”!

转载请注明:CodingBlog » Coding &Timing 小例子

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情