tag 标签: 功能验证

相关博文
  • 热度 28
    2014-5-3 20:50
    3986 次阅读|
    11 个评论
    进入FPGA设计这个行业已经整整一年了!从一个不知FPGA为何物的小白,慢慢的开始能够读懂别人的代码,了解一些FPGA内部的结构,做一些简单的设计。现在的水平仅仅限于能够写出代码的级别吧!时序方面知之甚少。 原来是做C++软件设计的,由于自己对数字电路深深地热爱,依然的在找工作的时候选择了一份FPGA设计的工作。 本来是打算在这个五一假期好好整理一下过去一年自己的学习历程。把自己一年来积累和学习的东西好好整理一下,结果一直在读EDN里面的博客和帖子,不觉间三天已经过去了,(这里要特别感谢下特权同学,特权同学的书和博客对于我起到了入门的知道作用)。所以,什么也没有写出来,也许自己的水平还不够吧!还没有什么有价值的东西能够与大家分享的。 不过想了想还是要留下一点东西。由于单位项目管理制度等等各种原因,去年的下半年,自己有一些空挡时间。由于自己有C++编程的基础,跟师傅聊了一下。决定用这段时间来学习SystemVerilog语言,侧重于验证方面。 大约用了两个多月的学习,自己基本掌握了,systemVerilog基本语法和编程方法。然后看了钟文枫的《systemverilog与功能验证》和夏宇闻老师的《验证方法学》。2014年一开始,为了验证项目组开发的MAC控制器软核,领导便开始让我使用systemVerilog进行功能验证。 在进行项目方案设计时,是考虑使用现有的一些成熟的验证方法学库的,如VMM、OVM或者UVM。但是,下载下来OVM库,自己看了一下,里面文件很多。再加上自己当时水平有限,自己试了一下觉得有些吃力。加之项目节点并不是很充裕,于是决定采用验证方法学推荐的层次结构,自己编写所有的模块。scoreboard,agent,generator,driver,transactor等模块。组建了一个验证系统,刚开始跑起来感觉还可以。当时随着用例的编写,不断发现的问题绝大部分都是来自于TB本身,而不是DUT。于是自己大部分的精力都在维护这个自己编写的验证平台上,最后都开始怀疑自己当初的决定是否正确。 前天在QQ群里有个朋友让帮忙写一个UVM的小测试平台,自己帮他写了一个。突然发现用起来很是方便。 于是感慨万千,既然有成熟的验证库,自己何苦用自己那三脚猫的编程水平去编写什么验证平台。反而使工作量加大,又得不到好的验证结果。 接下来,有时间的话一定要好好学一下UVM验证库。希望能做出一点点成绩来!
  • 热度 15
    2010-9-27 09:44
    2922 次阅读|
    0 个评论
    赠书热抢计划 http://www.edaunion.com/bbs/viewthread.php?tid=1126extra=page%3D1 为了让更多读者了解SystemVerilog在验证方面的应用,本网站联合机械工业出版社推出10赠书.获取增书方法如下: 1.在5所高校BBS和2个技术网站或论坛 发布- 新书上市信 息 .   发布帖子需在一个月内有效,请发布人在本贴中张贴自己发布内容的链接,我们会在一个月后确认并审核所有链接.   其他网友已经发布过的网站,不纳入统计范围. 2.获取到赠书的网友请在阅读本书后在China-pub或者豆瓣发布阅读评论,或者通过 联系我们. 赠书10本,先到先得.                                           EDAUNION机械工业出版社联合赞助                                                  2010.9.26 内容简介 本书重点介绍硬件设计描述和验证语言SystemVerilog的基本语法及其在功能验证上的应用;书中以功能验证为主线,讲述基本的验证流程、高级验证技术和验证方法学,以SystemVerilog为基础结合石头、剪刀、布的应用实例,重点阐述了如何采用SystemVerilog实现随机激励生成、功能覆盖率驱动验证、断言验证等多种高级验证技术;最后,通过业界流行的开放式验证方法学OVM介绍如何在验证平台中实现可重用性。   目录 前言 第1章功能验证技术与方法学概要 1.1功能验证与验证平台 1.1.1专用芯片设计流程 1.1.2什么是验证 1.1.3验证平台可以做些什么 1.1.4功能验证流程 1.2验证技术和验证方法学 1.2.1黑盒、白盒与灰盒验证 1.2.2验证技术 1.2.3验证存在的挑战 1.2.4验证方法学 1.2.5断言验证 1.2.6覆盖率驱动验证 1.3硬件验证语言 1.3.1Open Vera 1.3.2e语言 1.3.3PSL 1.3.4SystemC 1.3.5SystemVerilog .第2章数据类型与编程结构 2.1数据类型 2.1.1两态数据类型 2.1.2枚举类型和用户自定义类型 2.1.3数组与队列 2.1.4字符串 2.1.5结构体和联合体 2.1.6常量 2.1.7文本表示 2.1.8操作符和表达式 2.2过程语句 2.2.1赋值语句 2.2.2控制结构 2.3函数和任务 2.3.1函数和任务的区别 2.3.2子程序定义 2.3.3子程序参数 2.3.4子程序返回 2.3.5自动存储 2.4编程结构 2.4.1模块 2.4.2接口 2.4.3过程块和语句块 2.4.4数据对象 2.4.5程序块 2.4.6简单的验证架构 2.5数据的生命周期和作用域 2.6数据类型转换 2.6.1静态类型转换 2.6.2动态类型转换 第3章并发进程与进程同步 3.1fork…join 3.1.1三种并发方式 3.1.2进程与变量 3.1.3进程控制 3.2mailbox 3.2.1mailbox的基本操作 3.2.2参数化mailbox 3.2.3mailbox应用实例 3.3semaphore 3.3.1semaphore的基本操作 3.3.2semaphore应用实例 3.4event 3.4.1事件触发 3.4.2等待事件 3.4.3事件的触发属性 第4章面向对象编程入门 4.1过程编程语言与面向对象编程语言 4.2类 4.2.1类的基本概念 4.2.2构造函数 4.2.3静态属性与方法 4.2.4this操作符 4.2.5对象的赋值与复制 4.2.6块外声明 4.3石头、剪刀、布仲裁器实例(基于类的验证平台) 4.3.1验证环境顶层 4.3.2验证组件 第5章虚接口 5.1虚接口的基本概念及应用 5.1.1虚接口的基本概念 5.1.2虚接口的应用 5.2端口模式和时钟控制块 5.2.1端口模式 5.2.2时钟控制块 第6章随机测试 6.1激励产生 6.1.1什么是随机 6.1.2潜在问题 6.2随机生成机制 6.2.1随机系统函数 6.2.2randcase/randsequence 6.3基于对象的随机生成 6.3.1随机变量 6.3.2约束定义 6.3.3随机方法 6.3.4随机使能控制 6.3.5约束的动态修改 6.4标准随机函数 6.5随机激励的应用 第7章继承与多态 7.1继承和多态的基本概念 7.2继承与子类 7.2.1类的继承与重写 7.2.2子类对象与父类对象的赋值 7.2.3构造函数调用 7.3虚方法与多态 7.3.1虚方法 7.3.2多态 7.4虚类和参数化类 7.4.1虚类 7.4.2参数化类 7.5约束重写 7.6数据的隐藏与封装 第8章功能覆盖率 8.1覆盖率 8.1.1目标覆盖率 8.1.2代码覆盖率 8.1.3功能覆盖率 8.2SystemVerilog的功能覆盖率 8.2.1覆盖组(covergroup) 8.2.2覆盖点(coverpoint) 8.2.3交叉覆盖点(cross) 8.3覆盖率驱动的验证平台 第9章断言 9.1断言的概念及作用 9.2SVA 9.2.1SVA的语法层次结构 9.2.2SVA应用实例 9.2.3bind 第10章验证重用与验证方法学 10.1验证重用中存在的问题 10.2验证方法学OVM 10.3OVM的四大核心技术 10.3.1基于Factory的验证平台动态构建 10.3.2动态的配置机制 10.3.3测试用例在验证架构的顶层 10.3.4激励产生与验证架构分离 第11章SystemVerilog与C语言的接口 11.1什么是DPI 11.2DPI的应用 11.2.1方法的导入 11.2.2方法的导出 11.2.3DPI的数据类型映射 11.2.4DPI的具体应用 附录A覆盖率内置参数和方法列表 附录B断言重复操作符和序列操作符列表 附录CQuestaSim简要介绍 附录D常用术语中英文对照 参考文献 后记
相关资源