1)良好的沟通技能:需要与需求方核对需要的功能及性能,态度很重要,谦逊专业的沟通态度才能对需求理解无偏差,理解错误,后面就可能引起构架的修改。对外团队协作能力很大一部分体现在这里。2)行业背景知识:需要把需求翻译成FPGA的功能点以及逻辑上的处理流程(流程及需要的数据结构,用硬件的大白话就是大的pipeline流水线功能以及每个功能对应的表项及数据结构)。1)功耗评估:xilinx和altera两家都会提供功耗评估excel,填入使用的IP、逻辑使用量、频率、IO类型、时钟等,可以评估总的功耗大小,以及每一路电源的电流的大小预估,这个很重要,是板子能否做稳定的一个重要因素2)IO设计:电路连接设计相关,把对外设计的接口特别是牵涉到存储器、transceiver相关的接口、IO电平标准、时钟分布都要例化出来,然后编译通过,软件输出csv文件,里面包含了IO的电平标准及外围连接,这一步极大提升做板一次成功率。因为每一代FPGA以及每个系列器件的结构总有些不同,特别是共享PLL,transceiver,存储器的共享模块设计都会有些不同,因此安全做法是把要使用的除LUT和RAM以外的资源例化,然后编译通过,保证外围连接不出错。3)软硬件接口设计:制定软件要访问FPGA的方式、以及软硬件如何配合、FPGA如何初始化功能。这块需要有经验,不同的应用场合需要设计不同机制。大体可以分为以下几类:数据、命令、状态的互传:高性能一般要设计DMA,不同应用DMA要求不同。4)逻辑部分的总体规划:时钟域规划、复位规划、模块划分及模块功能规划、FIFO/RAM使用大小及类型规划、模块间传递接口规划(最好标准化,类似软件API,以后可复用)、编码规则制定。1)良好的coding规则:主要是命名,命名至少要区分:同步寄存器、跨时钟域寄存器、连线这些信号命名最好在前缀区分,这个在后期下约束时可以用通配符找信号。3)领域内常见算法的实现:比如针对网络:共享缓存设计、各种HASH算法实现、LPM查表算法、各种匹配算法实现。加解密领域,需要把串行算法翻译成硬件并行算法的能力。针对目前流行的神经网络,针对各种网络如何设计高效的数据流入方式,如何进行特征的预处理。1)仿真平台搭建,看设计大小及是否将来重用,设计大且重用多,考虑UVM这些设计方法及平台搭建。简单的就利用verilog,通过task任务的设计及调用来设计仿真平台。需要掌握testbench设计、仿真工具使用及debug。2)测试规划及项目抽取,这个是目前大部分FPGA工程师容易忽略的地方,设计要稳定,要系统的进行项目抽取,最好是另一拨人根据自己对规格的理解来系统抽取测试项目,这样完整验证后保证功能大体稳定。而性能测试一般要在实机测试中进行。其他软件相关的特殊信号的约束(一般通过在代码中用属性表示)掌握看后端的原理图、器件映射图、出问题时可以在后端把一些网络剪短或连接(ISE之前提供,vivado不知道是否还有这种工具)一般厂商都会提供:transceiver调试工具测试回环,无码率等。
欢迎关注至芯科技
至芯官网:www.zxopen.com
至芯科技技术论坛:www.fpgaw.com
至芯科技淘宝网址:
https://zxopen.taobao.com
至芯科技FPGA初级课程(B站) :
https://space.bilibili.com/521850676
至芯科技FPGA在线课程(腾讯课堂) :
https://zxopenbj.ke.qq.com/
至芯科技-FPGA 交流群(QQ):282124839
更多资料下载欢迎注册 http://www.fpgaw.com
欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!