路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

验证的管理篇之二:验证管理的三要素

已有 1515 次阅读| 2016-10-16 22:40 |个人分类:验证系统思想|系统分类:芯片设计

有一句关于项目成功或者失败的话,比较受用,在这里与君分享:“每个项目的失败都各有各的问题,而成功项目之间却有共同之处”。对于一名验证经理和一个验证团队,如果可以将验证的三要素:时间、人力资源和任务做好恰当安排,那么项目的成功已经完成了一半。

我们接下来会结合项目的实际经验,介绍如何规划时间、安排人力和做好任务的优先级划分和分派。

时间管理

早行动
在项目还在备案策划的时候,先进入项目的是什么角色?系统工程师。因为他们需要定义系统和各个模块的性能参数、功能描述。此外,验证人员也需要尽早参与进来。这其中的原因在于,继承性的项目一方面在系统结构上面有相似性,另一方面在新项目的验证环境(无论是模块还是系统层面)都有可继承性。所以,各个模块和系统验证人员尽早参与到项目的前期定义环节,可以尽早知道设计的改动从而考虑如何对原有的环境做出更新。同时,在选用IP和定义新模块的过程中,验证人员也可以更早地考虑选用什么验证IP、验证方法和相应的工具。

在实际项目中,验证人员可能会等待设计实施或者IP的功能选择,这种等待是有缩短的空间的。例如,如果设计是在原有设计的基础上更新,那么验证环境可以先行(通过复用)来首先验证原有的功能部分;又例如,如果是新的设计,那么验证人员可以协助系统工程师在早期功能定义时,实现虚拟模型(virtual prototype),并创建验证环境来实现基本测试,待后期设计实现以后,将虚拟模型替换为真实设计,并将虚拟模型作为可参考模型来进行数据比对;再当确定IP的特性参数之前,可以提前阅读完善的IP验证套件文档和环境,可以通过早期认识环境,在IP参数确定下来之后实现快速配置环境,开展验证工作。

有经验的验证团队,在项目伊始甚至开始之前就考虑更新验证环境、流程、工具选择、方法学、技能训练、自主工具开发等等。因为只有将这些可以提前的工作提前了,才能在项目运行的时候投入更多的时间进行功能相关的验证。类似的有效资源利用方式还包括,将验证环境搭建工作和测试用例创建工作划分开,也就是让少数人搭建维护验证环境(本身需要全面的系统知识和验证经验),让剩下的绝大部分专心创建测试用例,通过这种让资源更专注地进行功能验证来提高产出效率。

少依赖
一旦有了充分的意识,懂得验证过程并非是在设计的功能完备之后开始的道理,那么验证人员就应该想出各种办法来减轻或者消除对于设计进度的依赖性。尤其对于验证经理而言,让团队因为依赖一些未完成的事情而白白浪费时间,这对于项目执行来讲是大忌。

同时,考虑到验证团队往往需要在两个以上的项目中同时开展新项目以及维护老项目,更需要做好实现的进度安排,避免出现项目之间人力冲突的情况

所以,目前用来降低依赖性的方法譬如有在一些IP模块没有准备好之前,可以通过原有的设计或者创建行为模型来暂时替代,又譬如软件开发无法在低速的仿真环境下进行前期软件开发,但他们可以利用硬件加速器来提前在芯片上进行软件开发。    

大局观
在实际项目中,往往我们会将不同的模块分派给相应的设计人员和验证人员。对于每个小组而言,他们首要照顾的是分给他们的“一亩三分地”,但同时我们还要求所有的验证人员都清楚共同的关键节点,以及各个模块彼此之间的依赖性。

如果模块A依赖于模块B,那么假定关键节点在4周之后,模块B的验证人员需要考虑的不单单是在4周之内完成验证任务,更需要有大局观,将模块B在2周或者3周左右完成验证交付给模块A,或者才可以采取分阶段提供的手段,尽可能减少模块A对模块B的依赖性。

而在面临选择验证工具、方法学的时候,需要考虑的不单单是该方法或者工具本身可以提高多少仿真速度或者覆盖率,而同时也要考虑人员的技能培训投入、学习曲线、新工具的整合、新环境的维护等等与项目进度密切相关的因素。    


人力资源安排

团队建设
由于验证技术的趋势变化加快,新的方法、工具层出不穷,验证团队的成员组成往往需要有不同技术背景。对于这种整体的需要,我们在招聘或者培养人员的时候,会考虑所需要具备的基本技能,和在某些技术领域较深入的人选,例如软件编程、脚本、验证环境搭建、形式验证、硬件加速等等。

一个经验丰富的验证团队成员之间的技能一般会有重叠和不同的部分,这种方式可以保证在人员任务选派的时候会有多种选择,同时团队在共同工作时,也可以实现技能互补。

有不同经验层次的梯队即可以保证技术的传承,梯队的培养,同时在任务分派的时候,也可以考虑将新的任务交给老员工,将老的任务交给新员工,满足老员工新技能培养和接受新的挑战,也使得新员工快速适应项目环境。


技术和管理
关于技术和管理之间孰轻孰重的争论恐怕会长期延续下去,尤其在研发团队中,这一分歧也更加明显。我们通常见到的情景是,技术功底深厚的人少有管理同样出色的,而善于在不同部门、技术组之间沟通的人善于沟通、计划、监督和衡量却又无法很好地兼顾技术层面。目前在多数公司的研发团队中,技术优秀的人才会被委以团队和项目管理的责任,但这种选择不见得是最合适的。

伴随着验证项目的要求越来越复杂,芯片公司都明确要求有经验的项目管理的合适管理者,因为这样一位管理者会对整个项目组起到组织和推动作用。所以好的验证组织既需要有技术良好的梯队,也有着丰富的管理经验。一个验证团队需要不同技术侧重背景的验证人员,也需要可以统观全局的验证经理。



任务拆分和重组
在项目立项和启动初期,往往摆在眼前的是一团迷雾,这是因为系统结构和设计功能描述可能还未完全确定下来,同时相邻模块的不确定性也会影响到自身模块。在这种时候往往考验一名验证经理的经验,因为他需要在不确定环境当中找到确定因素,来安排验证进度、估算所需要的验证资源,而对于一名验证人员,他也需要开展已经可以实施的行动。

任务拆分指的是可以将一件用时较长或者较复杂的任务拆分为不同完成阶段以及所对应的时间段。拆分任务的好处表现在:
  • 更容易清楚要做的任务的技术难易度、时间长短
  • 帮助分辨不同小的任务之间的依赖性
  • 发现哪些部分是核心,哪些部分存在风险
  • 在有多人参与的情况下,可以帮助更合理的分配任务
  • 细分的任务有助于进度跟踪和工作量化

任务重组指的是验证经理在统筹各个模块、不同验证周期之间的任务时,可以化整为零、合理地对不同任务进行合并、转接、排序等,它的目的是为了更有效地利用整体的验证资源,常见的任务重组场景包括:
  • 发现各个模块验证中共同的可利用资源,指派专人维护这些资源(验证IP、递归工具、环境、脚本、仿真工具等)
  • 当模块A和模块B都需要创建一个类似组件或者环境时,考虑两个组之间共同规划同一个环境或者参数化的组件,以便减少整体工作量,提高模块复用性
  • 在发现不同模块之间有依赖性的时候,就需要安排优先级,消除依赖路径,尽可能使全员都转动起来

上述的验证管理三要素,无论对于验证经理还是普通的验证人员都有参考意义,因为在日常工作中,我们需要将如何提高验证效率(工作效率)记挂在心上,尽早地为验证做安排,早行动,才会在愈加迅速的芯片开发中有着团队整体的节奏感。下一节我们将会重点讨论验证的收敛过程。

谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 19:31 , Processed in 0.020445 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部