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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2670|回复: 6

[求助] 求助:monitor中如何用信号沿给一个数清零?

[复制链接]
发表于 2013-5-15 15:29:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 oscillator_cn1 于 2013-5-16 10:49 编辑

各位:
      最近正在用UVM搭建仿真环境。在写monitor时候遇到一点问题,嗯,我写的是monitor接收一幅图像的数据,但是不知道该图像的大小。因此,需要根据interface中的hs和vs来给line_cnt和pix_cnt进行清零,加一操作。本来我想的是“valid有效时采集数据”,“hs的上升沿时line_cnt加一”,“vs的上升沿,line_cnt和pix_cnt均清零”这三件事可并行进行。代码如下:
task run_phase(uvm_phase phase);
    wait(!vif.vdo_rst);
    `uvm_info(get_type_name(),"Detected Reset Done",UVM_LOW)
    fork
        forever begin
            @(posedge vif.vdo_clk iff(vif.vdo_rst))
            if(vif.valid) begin
                my.r[pix_cnt]=vif.r;
                my.g[pix_cnt]=vif.g;
                my.b[pix_cnt]=vif.b;
                pix_cnt++;
            end
       end
       forever begin
           @(posedge vif.hs)
           pix_cnt++;
       end
       forever begin
           @(posedge vif.vs)
           pix_cnt=0;
           line_cnt=0;
       end
    join
endtask
运行的结果是pix_cnt能够正常进行加一操作,但是没办法清零,line_cnt既没办法加一,也没办法清零,为什么会这样呢?我该如何修改呢?

用[code] 后代码全变成一行了,重新编辑了一下,去掉了【code】【/code】
发表于 2013-5-15 16:54:56 | 显示全部楼层
fork join这么多task在对同一个变量赋值有竞争危险。建以都在vif.vdo_clk上升沿对各个变量赋值;另外可以定义几个变量来检测vsync和hsync的上升沿。在vif.vdo_clk的上升沿的时根据这些变量决定究竟是该请0 还是+1。
 楼主| 发表于 2013-5-16 10:01:32 | 显示全部楼层
回复 2# duge0413

我也曾想过像verilog一样,用hs_d1,hs_d2来产生hs的上升沿信号,但是在monitor的run_phase中不知道该怎么操作,因为我只能定义logic和reg,不能定义wire,而且貌似没办法使用"<="来赋值,这样出来的结果是hs_d1跟hs完全同步,根本没延时。
发表于 2013-5-16 10:34:29 | 显示全部楼层




    I don't think your 3 @ are issue. Just make your fork-join clear, while should involve three begin forever @ ... end blocks. Set counter as int
发表于 2013-5-16 13:04:05 | 显示全部楼层
回复 3# oscillator_cn1


   hs_d2=hs_d1;   hs_d1=hs;不可以吗?
 楼主| 发表于 2013-5-16 13:33:45 | 显示全部楼层
用$display打印出来查看好像不行,看波形的话,我用的是nc,还不知道怎么看class中的波形。
发表于 2013-5-16 13:42:18 | 显示全部楼层


用$display打印出来查看好像不行,看波形的话,我用的是nc,还不知道怎么看class中的波形。
oscillator_cn1 发表于 2013-5-16 13:33




   No way to check waveform in SVTB unless you link the signal into your interface block.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

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

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