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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6006|回复: 3

[求助] 关于systemverilog中的一些疑问

[复制链接]
发表于 2014-4-24 12:41:31 | 显示全部楼层 |阅读模式

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

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

x
各位大神,在这里想请教一下关于sv中代码描述的一些问题。
因为我只对verilog非常熟,因此对软件编程有的时候不是很理解,关于它的执行顺序有的不明白。在verilog中都是在一些过程块中,添加语句组,语句都是放在begin...end 或者fork...jion中,但是我看sv的代码中很多都是很随意的感觉,并没有都放在语句组中。如:
   initial
            tie_score=0;
            always @(posedge both_ready)
                begin
                 。。。。               
                 end

  function rps_c clone;
        clone=new;
        clone.rps=this.rps;
      endfunction
      
      task rps_randomize();
        bit[1:0] temp;
        temp=$urandom_range(3);//实现随机激励产生。
        $display("tmp is %b",temp);
        if (temp=='b00)
          temp=2'b01;
          case (temp)
            'b01:rps=ROCK;
            'b10:rps=PAPER;
            'b11:rps=SCISSORS;
          endcase
    endtask
如上,在function或者task中都没有用到语句组,那么在执行的时候按顺序从下向下么。是不是在这里只要没有用到fork...join,就没有像verilog中的并行性这样的概念了?
        在initial中,最外围没有begin。。end,那其中的语句时并行的,还是从上向下一条一条执行。还有在initial中,能不加语句组吗?(begin...end 或者 fork...join)
发表于 2014-4-24 15:44:54 | 显示全部楼层
在function和task中要是没有用到fork join,那么默认就是begin  end 也就是默认是串行执行的,从上倒下一条一条执行,但是要注意一个问题:
就是function中没有仿真时间的概念,也就是在function中执行的语句都是不占用仿真时间的,因此串行和并行没有区别
而在task中是有仿真时间的概念的,
大概就这么多。
另外在initial中,不加语句组的话,默认就是begin  end
 楼主| 发表于 2014-4-24 17:08:38 | 显示全部楼层
回复 2# guolehaohao


    哦,说的很清楚,非常感谢,明白了!!
发表于 2015-7-31 11:16:24 | 显示全部楼层
進來學習學習
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-23 20:32 , Processed in 0.024248 second(s), 8 queries , Gzip On, Redis On.

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