热度 3| ||
进阶之路——绕不开的宿命C/C++
中国本土哲学以及中医讲“阴阳互根”,诸如,“在天成象,在地成形,变化现已”,“阳在外,阴之使也,阴在内,阳之守也”,都在讲述何为阴阳,以及阴阳之间的关系。简单来讲,一切抽象的,功能的或者主导作用的无形的东西,都可以称为“阳”,一切相对具体的,物质的被引导的东西,都可以称为“阴”。阳主导阴,阴体现阳,而SOC设计中软件和硬件正如同阳与阴。
SOC设计包含两大部分:嵌入式软件开发和SOC芯片设计。嵌入式软件具有所有软件的共有特点,是芯片功能的直接体现,便于修改,是软的,是功能应用性质的,这对应于“阳”的特点,而SOC芯片作为软件运行的载体,为软件的运行提供物质平台基础,相比较于软件,SOC芯片的设计具有相对固定,一旦流片,更改麻烦,周期长的特点,这对应于“阴”的特质。缺少了SOC芯片这个物质载体,软件如同空中楼阁,缺少了软件的SOC芯片,不过是没了任何价值的沙砾罢了。所以,在芯片设计之初,功能需求,SPEC定义是设计的第一要务,当所有的需求、特征定义清楚,而设计不过是一个具象化的过程!!为啥搞架构的牛逼,就因为人家具有”阳“的主导性,为啥只会写RTL的总比搞架构的低一层级,因为他只有”阴“的被动响应特性。
由于SOC芯片设计,最终为软件服务的,而软件是为功能服务的,而服务是解决市场痛点的。所以产品的定义,功能的需求,决定了SOC芯片设计的具体要求,所以要搞好SOC设计,首先得把功能需求搞明白,这是最基本的前提,而现在的软件开发用的语言,比较经典的还是C/C++,它描述了功能执行的详细过程和具体步骤,最终控制了SOC芯片中每一个gate的开关启合,为啥现在讲“协同开发”?软件和硬件的深度契合以及优化,最终决定了整个系统性能的优劣。系统的软件功能之于SOC芯片,如同全局之大目标,而不谋全局者,不足谋一隅。所以SOC设计的进阶,在系统的功能实现的详细过程,而熟知该过程的方法,莫过于用C/C++自己走一遍,反观SOC设计的大牛,无不是精通C/C++和RTL的设计者。
简言之,SOC的魂在于S,在于系统层面的统筹考量,这是其最核心的价值所在,所以进阶之路就是通向系统统筹的过程,而C/C++是路上最好的工具。
如果说C/C++只是通往系统架构的工具,因此学习C/C++,并参与软件顶层设计,是进阶之路的主观推动因素,那么“综合工具”的快速迭代,则更像RTL设计人员命运的车轮,稍不留神,就被无情碾压。
数字电路设计的本质,最终还是实现模拟门电路,正所谓“数模同源”,而数字电路设计不过是用软件的方法来设计硬件电路罢了。而veriloghdl作为寄存器级硬件描述语言,vhdl作为行为级描述语言,都是把设计的方法转化为不同的软件层级,并构建了底层硬件的软件模型,那么我们完全可以推测,假如有一天业界搞出了一款牛逼的“综合器”,可以完美实现C/C++到门电路之间的转换,让你不用去关心具象的实现过程,而只去关注“实现功能”其本身,那么verilog和VHDL的存在价值还有吗 ?或者说还像现在这么大吗 ?而这一倾向在现在已经初露端倪,比如现在推出的可综合的Systerm V"和”Systerm C"等相对高级的硬件描述语言,但其高级程度和C/C++相比,还是差了许多,而苦于“综合器”这个瓶颈,verilog和VHDL在当前仍然具有不可替代性,但我们完全有理由相信,这个问题一旦解决(也必然会解决),那么数字设计(当然包括SOC芯片的数字设计)流程和设计需求将会被重新定义。
所以,C/C++,一起学习吧!!