前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解Vivado HLS设计流程

图解Vivado HLS设计流程

作者头像
Lauren的FPGA
发布2019-10-31 00:26:52
1.9K0
发布2019-10-31 00:26:52
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

上期内容:揭秘DCP

在ESL(ElectronicSystem Level)阶段,典型的特征之一就是采用高层次语言完成设计。这里的“高层次”是相对于传统的RTL语言(VHDL/Verilog)而言。Xilinx有专门的高层次综合工具Vivado HLS,可支持C、C++和System C做为设计输入。

先回顾一下传统的RTL设计流程,如下图所示。设计输入为可综合VHDL/Verilog/System Verilog以及相应的Test bench,这里Test bench也是采用硬件描述语言描述。之后,完成行为级仿真以验证功能的正确性,综合以完成RTL到FPGA器件结构的映射,布局布线将相应的逻辑单元放置到具体型号的FPGA中并连线。在这两个阶段都要保证设计时序收敛,性能满足要求,资源利用率合理。

再来看看Vivado HLS设计流程,如下图所示。此时设计输入采用C/C++或者System C,相应的Testbench也采用这种高级语言描述。同时在C这个级别完成功能验证,因此其仿真速度比传统的RTL级别的仿真要快很多。C综合完成C到RTL级别的转换,然后就可以基于生成的RTL代码采用RTL设计流程。

在这个流程中,设计输入需要Test bench,这是很多初学者容易忽略的。基于C的Test bench不仅用于验证C算法功能的正确性,这可在log文件中看到,如下图所示。还用于C/RTL Cosimulation,这意味着设计者并不需要提供基于硬件描述语言的Testbench。C/RTL Cosimulation是至关重要的,它保证了生成RTL代码功能的正确性,毕竟设计优化和设计验证均是在C层面完成,如果生成的RTL代码功能不正确,是无法直接修改RTL代码的。

进一步详细描述Vivado HLS设计流程如下图所示。不同于传统的C算法描述,HLS需要通过添加Directives指导工具如何对设计进行优化。这些Directives可在Vivado HLS界面完成,最终写在相应的Tcl脚本文件里,也可直接以pragma的形式写在C程序中。

根据这一流程可以看到Vivado HLS设计输入包括三部分:C算法描述文件、C算法仿真文件和Directives文件。最终输出结果以IP、DCP或SysGen模型的形式存在。

结论

  • 从HLS设计方法学角度讲,C Test bench是必须的
  • 对设计的优化是在C层面完成的,不建议对生成的RTL代码进行修改
  • 良好的HLS设计包括:适宜HLS的C代码风格+完备的C Test bench+合适的Directives

如果文章对你有收获,欢迎转发赞赏~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档