目录
一、问题背景
曾经有朋友问我一个问题(我们都是芯片设计岗):你的设计方向是什么?
我当时主要参与的项目是SLAM相关的模块硬化,显然很可能他并没听说过SLAM,因此也无法了解我做的是什么。
目前主流的芯片设计方向划分方式是按照业务来划分:例如芯片设计(图像处理方向)针对开发图像应用的设计人员,芯片设计(SOC)针对系统集成,芯片设计(机器学习)可能针对专门的AI加速器。
那么问题来了,一方面按业务来分类很难突出一个设计方向的重点(不可能所有芯片设计人员知识面完全一样);另一方面当处理业务比较冷门时,交流成本极高,例如我需要告诉别人我从事SLAM相关模块开发,首先要让别人理解SLAM(同时定位与地图构建)是什么。
因此经过分析与思考,我认为按照软硬件协同工作方式来进行划分十分有效,共划分为3类。
1、不可编程模块;
2、弱可编程模块;
3、强可编程模块;
二、不可编程模块
首先“编程”的概念可以看做软件人员通过编写代码控制硬件的过程。“不可编程”指硬件在功能上不可改写,软件人员只能通过调节硬件参数等行为“微调”硬件,硬件是十分固定的。