在第一次写vPlan的时候,对于其中的Verification requirements (Features to be tested)这一章怎么写,脑子里没有一个清晰的概念,只是朦胧地认为“这一章列出了所需要验证的功能,应该把DUT的所有功能都写出来”。于是就写出了形如DUT读存储器、DUT写存储器、DUT被FW配置、DUT解码、FW读取DUT的结果”(v1之类的所谓功能(这里只是举例子,写得不完整也不精确),就好像告诉自己“以后在验证的时候,要验证这些功能都正常;在写bench的时候,通过参考所列的功能我就能得到bench编写的灵感”。但是仔细想一想,我发现我所列的上述功能简直是太不具体了,几乎起不到什么指导作用。

我下一个想法就是“把功能写清楚,使之能够更好地指导仿真”。于是我开始思考DUT(Rx)、FW、Tx_model在真实场景下的整个工作流程,我想到“如果我把系统运行时的行为描述得很具体,同时具体地标出涉及到的寄存器、信号线的名字,那么我就可以知道如何编写bench以重现真实环境下的DUT及其周围环境的运行情况了”。在此基础上我又加入了一些必不可少的东西,比如每次发送给Tx的数据应该是随机的,并且这个激励的每一种情况都应该被尝试一遍。于是我v2:“发给Tx_Model的13bit信号的每种情况都应该被遍历到、FW通过写寄存器A初始化DUT、FW通过寄存器B开启DUT工作、DUT读存储器、DUT写存储器、DUT发出完成信号irq、FW读取DUT运算结果、FW根据本次结果决定下一次对DUT的配置、等”(v2。比之前的v1版本的要详细得多,并且所描述的功能都是按照实际运行的时间顺序来整理的。此时非常困扰我的是:若想让仿真环境运行的和真实情况中的一样,即模仿真实DUT和周围环境的工作过程是难以利用bench实现的。因为系统的工作流程依靠一些DUT外部的逻辑设计,比如FW中的功能,甚至是更抽象的层面上的SW的功能所决定的。想要完全真实的模仿这些东西是不可能的或者说根本就不是DVer的工作(相关的内容我在《请专注于DUT的功能》中有描述)。在这个练习案例中,我根本没必要想得那么复杂,没必要把DUT外部提供的功能全都放到仿真环境中去。我在进一步修改vPlan时,着重区分哪些是DUT真正的功能,即真正应该被验证的东西。而且,在Verification requirements这部分,我更应该关注要验证什么,而不是怎么验证,所以按照时间顺序来写Verification requirements可能本来就是错误或者不必要的。

DUT的功能其实很简单:在某种寄存器配置状态下,读取某一段待译码的数据,DUT经过运算后返回一个结果和其它功能信号。至于v2中提到的“FW读取DUT的结果、FW根据DUT结果决定下一次配置”等,都不能算作是DUT本身的功能,是不需要验证的。至于DUT读写存储器这一功能,是一个非常常见的功能,在design spec中并没有强调读写过程有什么特殊性或者值得特别关注的地方,所以可以不写在vPlan里面。 这样看来似乎vPlan中的Verification requirements这一章没什么功能好写的了,但是,这一章在列出“Features to be tested”的同时还要定义“Verification Scope”,也就是对feature的特性作进一步的描述(约束)。所以在v3中我写道:“输入待解码数据的可能范围、输入UEID码的可能范围、DUT寄存器的可能配置方案、配置方案存在的约束关系、DUT解码的最长时间、等”(v3。这样似乎更符合“Verification requirements”的称呼。

转载于:https://www.cnblogs.com/sunmaoduo/p/4390465.html

我的第一份vPlan衍变路线相关推荐

  1. 程序员的第一份实习!附面试初体验

    实习经验分享,六点起床,日薪 100,坐高铁上班,为了什么? 大家好,我是鱼皮. 很多小伙伴私信问我些关于找实习的问题,比如学编程到什么程度可以找实习?到哪儿能找到实习?实习时一般都干点啥?我的技术太 ...

  2. Android移动应用ALL IN ONE架构衍变

    这篇文章更多表达的是一种对架构的思考:我们是否保持一颗开放.积极的心态去拥抱变化.我们不可能在市面上找到适合我们的架构,脱离业务谈架构是没有任何意义的,适合业务的才是好架构.真正好的架构源于不停地衍变 ...

  3. 50年代黄岩师专_300多位30、40和50年代获得第一份技术工作的开发人员的故事

    50年代黄岩师专 Over the weekend, I built a list of 300 developers who got their first tech job in their 30 ...

  4. web开发应届生入职_我如何从全职妈妈着手完成第一份Web开发人员工作

    web开发应届生入职 Two years ago I completed my first exercise on "Say Hello to HTML Elements" on ...

  5. 架构衍变过程----58同城沈剑:好的架构源于不停地衍变,而非设计

    [编者按]对很多创业公司而言,随着业务增长,网站的流量也会经历不同的阶段.从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要经历哪些变化?在"OneAPM 技术 ...

  6. p2020开发_10个使您在2020年获得第一份开发工作的项目

    p2020开发 For those of you looking to break into the world of web development with your first dev job, ...

  7. 计算机学生如何找到第一份实习?

    作为一名计算机专业的学生,找到第一份实习是非常重要的一步,它不仅可以帮助你更好地了解行业,增加实践经验,还可以为即将到来的校招提供有力支持. 计算机专业的校招,每年都在变得越来越卷.5年前,可能你只要 ...

  8. 软件开发 自学_自学11个月内如何获得第一份有薪软件开发人员工作

    软件开发 自学 by Akogwu Uche 通过Akogwu Uche 自学11个月内如何获得第一份有薪软件开发人员工作 (How I got my first paid software deve ...

  9. 【Android】移动端二维码扫描解决方案衍变

    移动端二维码扫描解决方案衍变 目录 踩坑&方案 方案选择 Zxing方向 Hms ScanKit方向 总结 目录 踩坑&方案 Zxing yyds? no,no,no -> Sc ...

最新文章

  1. 21.println输出打印.rs
  2. 服务器磁盘系统,服务器磁盘阵列与操作系统
  3. java面试题2014_Java生态系统– 2014年我的5大亮点
  4. mysql 自动备份_如何将mysql备份自动存储到minio
  5. java 9消失_java9增强的自动关闭资源
  6. XML文件源码察看器(三)
  7. (三) SiamRPN从论文角度介绍
  8. 钢琴的音色特点用matlab描述6,关于用MATLAB 实现简易钢琴 App的教程分享
  9. 重建oracle inventory
  10. 【​观察】从移动计算当道 看高通“高举高打”背后的势能
  11. 精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!
  12. str.c_str()
  13. 【信息系统项目管理师】信息系统主流开发方法之结构化方法、面向对象方法和原型法总结
  14. Principal Component Analysis(PCA)
  15. SS54/SS24/SS510及SMA/SMB/SMC不同封装区别
  16. 在Mysql数据库里通过存储过程实现树形的遍历
  17. (概率/dp)P2059 [JLOI2013]卡牌游戏
  18. word排版技巧:这几种特殊版式轻松搞定
  19. μ1 - μ2的置信区间
  20. 三星宣布量产64层V-NAND闪存芯片: 传输速度达1Gbps

热门文章

  1. ViewPager 实现页面左右滑动的简单案例1
  2. 2020 年 DevOps 七大发展趋势
  3. PO,VO,DAO,BO,POJO 之间的区别你懂吗?
  4. JavaScript 有多灵活?
  5. 框架:Servlet的生命周期
  6. 框架:Spring的自动装配
  7. Ajax-简单的HelloWorld实例,使用了XMLHttpRequest(two)
  8. ui和android有联系,Android单位换算与UI适配
  9. 印象笔记html预览,7 个方法,把印象笔记打造成轻量级笔记工具
  10. java 验证码 源码_java 验证码生成源码