上篇(为啥FPGA资源/时序都有很大的优化空间?)提到过:因为大家一直都没去怎么优化FPGA,然后就导致FPGA可以优化的空间很大。工作中会有一批人知道可以优化但很少去承担优化的工作,也有一批人不知道能怎么优化,还有一批人开始要硬着头皮开始优化FPGA了,那这么一批人为啥要硬着头皮开始优化FPGA了?
1. 市场导向开始变了
做技术的工程师追求技术高,但一个公司追求的是利润和快速变现。以前,FPGA作为一个比较高端的芯片,使用这个芯片的行业并不那么多,因此,只要你用上了FPGA开发了对应的产品,就能在市场上大赚一笔,简单说就是以市场、能卖出去为导向,包括现在还是有很多行业也还是这样,所以,自然FPGA只要能做出产品、实现功能就可以了,并不需要你做的更好,自然就不需要去优化FPGA,FPGA开发是否规范都不重要。
但是,现在它开始变了:
进入某个行业的公司越来越多,大家使用的FPGA方案都大同小异,不再是随随便便用FPGA搞一下,这个市场就都是你的了,大家开始卷FPGA了,当然也有人说:“和客户的关系很铁,只会用我们的产品,不优化FPGA技术我们也能卖出去。”其实,他说的一点没毛病,是这样的,但也能肯定另外一点:客户会反馈市场上其它产品比较好的点(比如:实现同样的功能,别人做的产品更小,自然功耗更小,成本更低),需要你去改进自己的产品,也就是你也要开始卷自己的FPGA了,倒逼自己的研发硬着头皮去优化FPGA(实际优化FPGA的第一步是先规范FPGA开发,而很多很不规范),不然时间久了,再铁的关系,东西差太多客户也不会买单;
FPGA的招聘信息,几年前都是只需要有FPGA经验,懂这懂那就行;但现在,你会发现一些公司加了2条:有规范的FPGA代码和文档编写经验,有优化FPGA时序、资源和功耗的经验。而且还可能一直都找不到这方面的人;
目前的经济不景气,经济下滑,很多公司都在不断的开源节流、降低成本,FPGA也因为制裁成本也变高了。产品中,优化FPGA使用低成本的FPGA实现相同功能的需求越来越多,10年前,我待的一家公司,就在不断地优化FPGA,使用更低容量成本的FPGA替代原来的FPGA,降低整个产品的成本,前提是这家公司的FPGA开发一直都非常规范,接近IC设计,这样才好去优化FPGA。
2. FPGA工程师也开始变了
以前FPGA工程师可能主要精力在功能的实现和Debug上:随便写代码,只要实现了功能,能正常工作,不仿真都是常事;Debug更是简单粗暴,C语言式的修改->编译->上板测试,通过了就算Debug好,哪里有问题补哪里,代码千奇百怪,无所不用。
但是,现在它也开始变了:
FPGA的容量越来越大,编译时间越来越久,代码越来越复杂,Debug时间越来越长。FPGA工程师在内部不得不搞起了标准化,开始更多的对写的代码做仿真,整理优化写的代码,虽然算不上优化FPGA,但至少规范化了FPGA的设计开发;
FPGA玄学的bug越来越多:什么有一些FPGA芯片可以正常工作,而另外一些FPGA芯片则乱码;什么有时候FPGA复位能工作正常,有时候FPGA复位直接跑飞......等等。不懂和懂FPGA的都摸不到头脑,其实大部分是需要优化FPGA的时序等。
FPGA编译和Debug的时间成本越来越大,势必就会导致加班越来越多,加班Debug多了,遇到的问题多了,反思总结也就多了,FPGA工程师也就至少会开始重视FPGA的规范化设计,如果能规范化FPGA设计,一段时间后,加班自然就会变少,加班变少,也就有可能会去优化FPGA。