Global Sources
电子工程专辑网站
首页 | 登录 | 现在注册  

设计自动化专区
采用各种EDA软件可以缩短设计周期,减少设计成本;然而在这些工具的使用过程中也会存在着一定的困难和问题。欢迎您提出自己的看法和观点,与大家共同讨论。
 


发表新主题 发表新主题 
收藏该主题... 收藏   打印这个帖子... 打印   关注该主题... 关注   推荐这个帖子... 推荐
楼主      问题: 学习用OVM编写验证程序(1)
发布时间: 2008-5-13 下午12:35

作者: jamesyan
等级: 初入江湖
积分: 176 分

发送消息

查看用户的所有发言

      学习OVM应该首先从www.ovmworld.org网站下载OVM框架和OVM类参考手册[1]。还应该有软件环境:Mentor的Questa或Cadence的Incisive。你准备用哪一种?如果只是想先试一试OVM,不妨先下载并安装ModelSim 6.3c以后的版本以便用来练习编程。
    
      OVM是开放源代码的。全部源码约13000多有效行。无论是否计划看源码,我们都应该先看看组成OVM框架的各个类之间的继承关系:
ovm_void <- ovm_object <- ovm_report_object <- ovm_component <- ovm_threaded_component <- ovm_env、ovm_test以及方法学元件ovm_driver, ovm_monitor, ovm_scoreboard和产生序列与情节的元件ovm_sequencer_base、ovm_scenario等类。
ovm_void位于最上端,参考资料[1]第10页说明ovm_void是一个没有成员没有函数的虚拟类。
      ovm_object是从ovm_void继承(extends)来的,[1]的第11-23页大篇幅介绍了它的函数,包括拷贝、克隆、比较、打印等基本功能,可以先用半小时粗略地看一遍各个功能的描述。实际应用时它的许多函数要根据测试环境中事件(transaction)的格式重新编写。
      ovm_report_object是从ovm_object继承来的,它增加了信息显示的功能,如ovm_report_error、ovm_report_fatal、ovm_report_info和ovm_report_warning,见[1]第68页。请用几分钟看一遍。
事件类ovm_transaction是从ovm_object继承而来。〖规则〗证实程序的所有事件都必须从ovm_transaction派生(derive)而来。
      举一个例子看看实际中如何用ovm_transaction,见下面的例子:
class my_data extends ovm_transaction;
  rand int address; //随机产生32bit数
  rand int data;
 
  function new(string name = "");
    super.new(name);
  endfunction: new
 
  constraint c_addr { addr >= 0; addr < 256; }//产生随机数的约束条件
  constraint c_data { data >= 0; data < 256; }
 
    `ovm_object_utils_begin(my_data)//注册这个事件
      `ovm_field_int(addr, OVM_ALL_ON + OVM_DEC)
      `ovm_field_int(data, OVM_ALL_ON + OVM_DEC)
    `ovm_object_utils_end
 
  function void randomize_();//用于代替randomize()函数
    address = $random;
    data = $random;
  endfunction
endclass: my_transaction
      如果你打算用ModelSim 6.3c仿真上述程序,函数randomize_()是必须的。因为ModelSim不支持build-in函数randomize(),只能由用户自己写的randomize_()代替。
      元件类ovm_component类是从ovm_report_object继承类而来的。元件(component)实际上是功能块。参考资料[1]的第30-53页详细介绍了这个类的函数。可用半小时的时间简略阅读一遍。想读原代码文件吗?ovm_component.sv文件很大有1400多行,还是留着以后慢慢来吧。
      各元件之间通过接口类相连接,见[1]的第139-173页。
      随机刺激类ovm_random_stimulus是由ovm_component继承而来的,比较小一点,可以看看它的源码:请在ovm-1.1/src/methodology/目录下找到ovm_random_stimulus.svh并打开,共128行。
这个类带事件ovm_transaction类型的参量,见44行。第50行说明与外界相通的连接口。第52行设定停止/工作状态位。
第70行设定一个字符串。第75行初始化接口。第77行得到随机发生器的一个种子,变成字符串并输出。
第99行输入参数-最多产生几个事件输出。第101行设定一个临时事件temp。第103行如果输入参数-事件是空的则产生一个新的事件。第105行最多产生max_count个事件。第109行完成一次事件随机化操作。可惜在ModelSim程序不支持assert()语句,此处将报错。怎么办?你再想想看。第111行自身复制并送到temp中。第114行将temp里的事件送到连接口。
      线程元件类ovm_threaded_component是由ovm_component继承而来的,它广泛用于各种事件处理器。环境(ovm_env)、测试(ovm_test)以及方法学元件如驱动器(ovm_driver)、监视器(ovm_monitor)、记分板(ovm_scoreboard)和序列发生器(ovm_sequencer_base)与情节发生器(ovm_scenario)的等元件类。
      通常我们写的测试程序封装在用户编写的环境(从ovm_env继承)类中。
ovm_component类中的函数connect()、configure()、run()、report()等函数和ovm_threaded_component类中的函数run()均在执行顶级函数run_test()时会自动依次执行。这个特点对于用OVM写验证程序非常有用。
      序列(sequence)和情节(scenario)是特定的事件,所以有下面的继承关系ovm_transaction <- ovm_sequence_item <-ovm_sequence <- ovm_req_rsp_sequence
ovm_transaction <- ovm_sequence_item <- ovm_scenario_base以后再详细介绍。
      参考资料[2]是Mentor为介绍该公司的AVM而写的,是入门级好书。而OVM源于AVM。参考资料[3]是则更专业,有很多OVM和有关断言(Assertion)的例子,很有参考价值。
      下一次我们将讲一个验证程序实例。
      (本文难度系数:0.4,学习需耗时2小时)
[1] OVM Class Reference,Version 1.1,April 2008
[2] AVM Cookbook for SystemVerilog and SystemC,Version 3.0 update 3
[3] Creating Assertion-Based IP,ISBN 0-387-36641-8

鲜花 (
0
)
臭鸡蛋 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
 
第 1 楼      回复主题:学习用OVM编写验证程序(1)
发布时间: 2008-5-21 上午11:03

作者: 暗黑骑士
等级: 初入江湖
积分: 125 分

发送消息

查看用户的所有发言

学习中

鲜花 (
0
)
臭鸡蛋 (
0
)
   回复该主题... 回复   引用这个帖子... 引用 
--- 现有 1 个回复,共 1 页,目前第 1 页 ---


积分排行榜
 

我是工程师


电子工程专辑论坛有奖活动开幕,展示你的智慧,赢得心怡大奖。

查看详情  排行榜


话题PK台

工程师是吃年轻饭的吗?

干一行爱一行还是爱一行干一行?

外企是不是比国企更适合职业发展?


经理人网站精选

热点话题

全新推出管理资源库,汇聚丰富管理知识

成功的人就是会“勉强”别人的人 

案例:被老板出卖的尴尬事

每周一问

鱼与熊掌不可兼得,什么是布里丹选择? 

博客文章

王石和万科错在哪里

(来源:世界经理人)


~
返回论坛首页

eMedia Asia EE Times - Asia | EE Times - India | | | 手机设计 | 媒体播放器 | 家庭娱乐系统 | 工业控制 | 汽车电子设计 | 电源系统
模拟混合信号 | 国际电子商情 | 电子系统设计
环球资源 环球资源企业网 | 环球资源内贸网 | 世界经理人 | 尚品人生 | Electronic Components | Computer Products | China Sourcing Fairs
TechInsights EE Times | ESM Online
 
 
RSS 新闻聚合器 | 意见反馈 | 网站导航 | 帮助 | 关于我们 | 隐私政策 | 联系我们 | 使用条款 | 安全承诺
Copyright © 2008 eMedia Asia Ltd. 本网站所有内容均受版权保护。
未经版权所有人明确的书面许可,不得以任何方式或媒体翻印或转载本网站的部分或全部内容。