在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4750|回复: 10

[求助] ovm验证时出现问题

[复制链接]
发表于 2012-10-19 21:43:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教各位高手一个问题:

class my_driver extends ovm_driver;
`ovm_component_utils(my_driver)
function void new(.....)
...
endfunction: new

function void build();
....
endfunction: build

task run;
...
seq_item_port.get_next_item(...);
...
endtask

endclass: my_driver


class my_agent extends ovm_agent;
`ovm_component_utils(my_agent)

my_driver driver;
my_sequencer sequencer;

function void new(...)
...
endfunction: new

function void build();
super.build();
sequencer = my_sequencer::type_id::create("sequencer",this);
sequencer.build();
driver = my_driver::type_id::create("driver",this);
driver.build();

driver.seq_item_port.connect(sequencer.seq_item_export);

endfunction: build
endclass: my_agent

class my_env extends ovm_env;
`ovm_component_utils(my_env)
my_agent agent;
function void new(...)
...
endfunction: new

function void build();
super.build();
agent = my_agent::type_id::create("agent",this);
agent.build();
endfunction: build

task run;
....
endtask

endclass:my_env

仿真结果显示,my_env 中的run()函数跑起来了,但driver的run()没有跑起来,agent, driver,sequencer都已经创建了,就是driver的run跑不起来,一直等在那里进行不下去了,请各位高手指点原因啊,小弟在此谢过
发表于 2012-10-19 22:24:33 | 显示全部楼层
sequencer  里面的sequence 呢? 没有看到sequence的类啊。没有子弹,driver怎么s啊!
 楼主| 发表于 2012-10-19 22:36:23 | 显示全部楼层
sequencer没有贴上来
class my_sequencer extands ovm_sequencer;
`ovm_sequencer_utils(my_sequencer)

function void new(...)
super.new();
endfunction:new
function void build();
super.build();
`ovm_update_lib...
endfunction:build
endclass: my_sequencer

class my_seqitem extends ovm_sequence_item;
.....
endclass:my_seqitem


class my_test extends ovm_test;
`ovm_componet_utils(my_test)

my_env env;
function void new(...)
...
endfunction: new
function void build();
super.build();
env=my_env::type_id::create("env",this);
env.assign_vi(test_top.dut_if)
endfunction: build

task run;
`run_sequence(env.agent.sequencer,"simple_seq");
global_stop_request();
endtask:run
endclass: my_test

module test_top;

my_interface dut_if;
dut dut(...);

initial
run_test("my_test");

...
endmodule
发表于 2012-10-21 19:47:49 | 显示全部楼层
建议在driver内的run函数内第一行添加一行打印信息,看看究竟是根本没执行run还是执行run了,但执行过程中遇到了问题,再做进一步调试
 楼主| 发表于 2012-10-21 20:24:18 | 显示全部楼层
回复 4# interlm

加过的,没有执行driver的run()。
发表于 2012-10-21 20:44:06 | 显示全部楼层
回复 5# zhcheng06

run()  phase  不执行,好奇怪,感觉只有一个原因能让他不执行,就是run() phase之前的phase没能正常执行下去
发表于 2012-10-22 04:57:05 | 显示全部楼层
你把那个simple_seq的class贴一下,特别是里面的body 部分,没有看到这个class的定义啊
发表于 2012-10-23 10:07:02 | 显示全部楼层
First you should learn clearly the OVM Construct and run your test according to the LAB!
 楼主| 发表于 2012-11-7 16:39:09 | 显示全部楼层
回复 6# interlm


    后来找到问题了,之前是driver::run()不执行,在monitor::run()中加上触发条件就可以了,就是  @(posedge ...)之类的条件
    总之谢谢你啊
发表于 2012-11-9 16:53:43 | 显示全部楼层
帮你顶 我也想知道
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 06:50 , Processed in 0.023045 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表