芯片是现代信息社会的基石和心脏,芯片技术与国家安全紧密相关,芯片国产化是必然趋势,深入理解芯片所基于的算法是国产自主研发的关键。厘清芯片研发的流程,明白算法与电路的关系,对于数字芯片开发工程师向更深层次发展十分重要。《从算法到电路:数字芯片算法的电路实现》这本书对芯片研发流程有详细介绍,本文主要解决数字芯片开发工程师在承担算法和数字设计综合任务时的痛点问题。
01 数字开发工程师掌握算法知识的重要性
芯片中的算法和电路设计是密切相关的,算法的好坏直接影响电路的性能、功耗和面积。
算法对电路设计的指导作用体现在3个阶段,分别是预研阶段、系统架构确定阶段和实际电路设计阶段。
1)预研阶段:复杂芯片在研发的起始阶段就有算法参与,甚至在项目规划立项之前的一两年,算法的工作就已经开展了。
2)系统架构确定阶段:在预研完成后,已经厘清目标芯片架构和基本算法细节的前提下,就可以启动正式芯片项目,并开始实际的芯片研发工作。
3)实际电路设计阶段:在芯片设计时,算法人员需要向数字开发工程师提供算法细节建模。在这一阶段,算法不是停留在理论上和纸面上,而是要变成具有实际功能的电路。
算法的工作既有高级的算法架构和算法选型,又有底层的算法建模和细节处理。但在实际工作中,包括大型公司在内的许多公司都没有足够的算法岗位来解决所有的算法问题,很多基本算法的实施,如截位、溢出处理、符号位处理、乘除法等,都需要数字芯片开发工程师自行完成。
工程师对于基本算法电路的处理方式主要分为两种:一种是凭经验,例如遵循“凡是加法就保留一个溢出位”这样的规则;另一种是在开始设计前,查阅大量的文献资料。上述处理方式有两个弊端:首先,由于开发工程师通常不具备算法仿真和评估能力,因此即使是最基本的乘除法,在纷繁复杂的各种方法中选出最合适的方法也是十分困难的;其次,一些类似口诀、规则的经验之谈,需要分情况讨论,过于简化的规则在实施中通常会增加不必要的面积开销。因此,由于缺乏方法论的总结,同一个工程师在处理不同芯片项目中的相同问题时,经常会使用不同的方法,并且经常进行重复研究,这样不仅会导致设计质量不稳定,还会延长开发时间。
02 数字开发工程师掌握算法知识的必要性
在芯片设计时,有算法人员和数字开发工程师的参与,其中,数字开发工程师又分为数字前端开发工程师和数字后端开发工程师。前端开发工程师负责编写寄存器传输级(Register Transfer Level,RTL),即对数字电路的抽象描述。后端开发工程师负责将RTL设计转变为具有具体型号名称的电路元器件,并且将其放置在特定的位置,用线路将它们连接在一起。
在数字电路开发流程中,与算法关系最为密切的是数字前端开发工程师,因为电路设计的好坏主要取决于RTL设计,而较复杂的RTL设计又离不开算法原理的支持。一个算法设计要转变为RTL设计,一方面要解决算法具象化的问题,另一方面要解决算法定点化的问题。不管是前端还是后端,想要高效率、高质量完成数字开发,都需要重视算法。
1. 算法的具象化
算法具象化问题,是指一个大的算法架构里面包含有多个算法层次。例如一款WiFi芯片的算法,由表及里可分为以下层次:
1) 顶层的架构上包含发射机(TX)、接收机(RX)和信道。
2) 进入发射机这一层次,里面包含扰码模块、卷积码编码器、LDPC编码器、空时编码器、空间流分配器、波束成形器、快速傅里叶反变换(Inverse Fast Fourier Transform, IFFT)等。
3) 进入LDPC编码器中,其内部包含了生成矩阵存储器、编码器、码率打孔器等。
如果每个层次的每一处细节都需要由算法工程师告知数字开发工程师,那么对于算法工程师的数量和质量的要求就都比较高,实际操作中无法执行。在实际中,算法工程师会选择一个层级作为底层,自该层往上,均为算法工程师需要具体化的内容,算法工程师会提供给数字开发工程师详细的代码,而该层再往下的内容需要由数字开发工程师自行完成,算法工程师只规定接口的格式、精度,以及运算时间要求。
2. 算法的定点化
算法的定点化问题,即在算法中处理的数据,其属性通常是复数、带符号、浮点,其形式通常是向量或矩阵,甚至是三维或更多维的矩阵,而开发工程师习惯处理的数据通常是实数、无符号、整型的标量,那么将复数转变为实数,带符号的计算转变为无符号的计算,浮点数计算转变为整数计算,矩阵运算转变为多个标量的单独运算,就是广义的定点化。
可以将具象化问题与定点化问题结合起来。假设算法已经细化到两个有符号的浮点数的除法,其内部运算过程并未给出,需要开发人员根据设计经验编写,此时,开发人员就必须熟悉常见的除法电路,其优缺点是什么,其运算器内部的参数如何定,还必须熟悉定点化如何做。
03 总结
这些基本知识看似简单,像是研究生在做小学数学题,但很多工程师对此只有几分粗浅的认识,缺乏方法梳理和原理理解,凭习惯和普通设计经验进行设计,导致开发速度慢、 设计缺陷多、验证时间长,在这种基本电路上牵扯了大量开发和验证时间,甚至还会多次重复开发。
很多项目付出巨大的代价才最终证明,无论上层架构和算法做得多么出色,只要底层运算设计有问题,芯片项目就会失败。千里之堤,毁于蚁穴,数字开发工程师掌握基本的算法常识,了解算法的工作思路和流程,熟悉常见运算单元的电路实现和仿真验证方法,是十分重要的。
如果你对数字开发中的算法问题感觉无从下手,苦恼于缺少实用的指导方法论,不妨从基本算法开始整理思路。推荐你阅读白栎旸老师的新作《从算法到电路:数字芯片算法的电路实现》。
- END -
作者简介:白栎旸,厦大通信系硕士,芯片设计与算法工程师,某知名企业WiFi芯片算法负责人。先后供职于多家知名芯片公司和创业团队,从事数字电路架构和算法设计工作,作为第一发明人获授国家发明专利4项,著有《数字IC设计入门》等专业技术图书。
本文摘编自《从算法到电路:数字芯片算法的电路实现》,转载请说明来源。
推荐理由:这一本书就把除法器、信号发生器、滤波器、小数分频器等10余种基本算法电路的Matlab建模和RTL设计讲透了。它可以帮你从根本上理解复杂电路的设计与优化问题。无论是数字IC设计工程师,还是FPGA开发工程师,通过这本书都可以快速成长为算法与电路设计专家。
直播预告:📣9月20日晚19:30,《从算法到电路:数字芯片算法的电路实现》作者白栎旸老师,直播分享“数字IC工程师的关键跌升”欢迎观看🔥
本文来源:原创,图片来源:原创、pexels
责任编辑:王莹,部门领导:宁姗
发布人:白钰