芯片研发:技术和管理如何不再互相拖累
做芯片的人都有类似的抱怨。设计工程师说项目管理系统里的状态更新是浪费时间后端工程师说管理层根本不懂时序收敛有多难。这些怨言背后是技术线和管理线长期脱节造成的摩擦。两条线各自运转偶尔在周会上碰个头然后继续各走各的路。技术线关心什么技术线的逻辑很直接。RTL写完了要跑仿真仿真通过了要做综合综合完了要分析时序。每个步骤都有明确的输入输出工具会告诉你pass还是fail。一个模块的开发技术上可能要经历这样的过程写完RTL代码跑lint检查修复几十个warning。然后跑功能仿真发现状态机有bug改代码。再跑一遍覆盖率只有70%补testcase。覆盖率到了95%开始做综合发现时序违例调整流水线。综合通过了CDC检查又报了几个问题再改一版。这个过程可能要迭代好几轮时间很难提前预测。但每一步都是必要的跳过任何一个环节后面都会出问题。管理线关心什么管理线的逻辑是另一套。项目有总体时间表分成若干个里程碑。每个里程碑有明确的交付日期和交付物。项目经理要确保团队按计划推进资源合理分配风险及时暴露。管理线需要的是确定性。这个月能完成哪些模块下个月能进入什么阶段如果有延期风险要提前多久预警但技术开发的不确定性很高。一个看起来简单的模块可能因为时序问题改三次架构。一个复杂的模块可能因为设计合理一次就通过。管理线要的确定性和技术线的不确定性天然就是矛盾的。脱节从哪里开始最常见的场景是这样的。项目计划里写着模块A设计完成时间节点是第8周。技术团队在第7周提交了代码项目管理系统里状态改成已完成。但实际上这份代码只是初版。验证团队拿去跑发现bug设计又改了一版。后端拿去综合时序收敛不了设计再改一版。到第12周代码才真正稳定下来。管理线认为第8周就完成了技术线直到第12周才算完成。这四周的gap就是后续所有问题的源头。验证团队最痛苦。他们基于第8周的代码搭建了测试环境写了一堆testcase。结果代码一直在改环境要不断适配case要反复调试。等代码稳定时验证时间已经被压缩了一半。后端团队也好不到哪去。他们需要稳定的RTL才能做有效的布局布线。如果设计一直在变后端的工作就是在做无用功。等设计稳定时留给后端的时间已经不够了只能加班赶工。对齐的关键是定义技术线和管理线脱节的根本原因是对同一个节点的定义不同。管理线说的完成是代码提交了。技术线说的完成是代码稳定了通过了所有检查点。要让两条线对齐首先要统一定义。什么叫设计完成不能是模糊的描述要有明确的、可量化的标准。比如可以这样定义RTL代码通过lint检查无error和critical warning功能仿真覆盖率达到95%以上综合后时序裕量满足目标值CDC检查无违例连续一周没有接口级别的修改这些标准都是技术指标可以用工具自动检查。一旦满足就意味着代码进入了稳定期可以放心交给下游。管理线的里程碑应该对应技术线的稳定点而不是代码提交点。工具链要打通现在的问题是技术工具和管理工具是两套系统。验证用VCS跑仿真覆盖率数据在数据库里。项目管理用Jira或者自研系统需要的是百分比和状态标签。中间的转换靠人工每周开会时口头汇报。这种方式效率低而且容易出错。技术数据更新很快可能每天都在变。但管理数据一周才更新一次。等管理层看到数据时技术团队可能已经改了好几版。要减少摩擦就要让技术工具的输出能直接对接到管理系统。覆盖率达到95%Jira里的状态自动更新。时序分析通过项目看板自动推进。不需要工程师手工填表不需要开会口头同步。组织层面的支持流程对齐不只是技术问题也需要组织层面的支持。当设计因为技术原因需要更多时间迭代时管理层要能理解这是正常的而不是简单的进度拖延。同时技术团队也要对自己的稳定性负责。不能无限制地改动把风险转嫁给下游。设计改动要有评审机制重大修改要评估对验证和后端的影响。更重要的是技术负责人和项目经理要建立共同的目标。不是技术追求完美设计管理追求按时交付两边各干各的。而是双方都认可在保证质量的前提下尽可能高效地推进项目。芯片研发人员的怨言很多时候不是针对工作本身而是针对无效的流程。填不完的表格、开不完的会、重复的汇报这些都是技术线和管理线脱节造成的浪费。让两条线真正对齐不是让技术迁就管理也不是让管理迁就技术而是建立一套双方都认可的、基于技术事实的协同机制。技术指标自动同步到管理系统管理决策基于真实的技术状态工程师把时间花在解决技术问题上而不是应付流程。这才是减少怨言的根本方法。