systemverilog学习(5)procedural statement ,task ,function&automatic

本节内容是sv里的剩余语法,task,function,automatic

一:procedural statement

1:新操作符

  1)     i++,++i,i--,--i     同c语言,但易出现race现象。

  2)     ==?,!=?    如:a==?b  ,x与z只能出现在右侧,即b的值有x或者z

  3)    inside  用于值的范围

      

2:强制转换

  1)数据类型强制转换

    通过赋值的方式,例如

    longint a,y;

    real r;

    y=a+longint(r);

  2)位宽强制转换

    

  在要处理的数据前面加上要扩展位宽值,如16‘

  3)符号位强制转换

  将无符号数转化为有符号数,将有符号数转化为无符号数

  signed'(expression)   unsigned'(expression)

3: 循环

  1)for 

    verilog中,循环体内的变量需要在循环体外声明,sv里,可在循环体内声明变量,这种变量是local的,在循环体外看不见。若在循环体内外同时声明同一变量,则互不干扰。

  2)do while   sv里增加的循环,verilog里没有。

  3)case

    增加unique,priority(优先级)选项;

二:function

1:主要概念

  不消耗时间;不带时序,function里不能包含延时信息,@,wait等时间信息关键字;

  由于task可以带时序,所以规定function不能调用task;

2:格式

  function [range] function_name; //[range] 指返回值function_name的类型

    parameters

    input declaration

    reg declaration

    --code body --

  endfunction

3: void function

  不返回值;在verilog里,function一定返回值,且返回的值是function的名字。

三:task

1:基本概念

  消耗时间,含有输入输出双向端口;可含delay,timing,event;

2:格式

  task task_name

    parameter

    input dedclarations

    output declarations

    reg declaration

    --code body--

  endtask

3: task与function内部变量是静态变量,在不同地方对同一个变量赋值会产生race,需要注意

四:sv里task与function增加点

1:不需要加begin...end

2:添加return,直接退出函数

3:  function增加了void function

  function void fill_packet(input logic[63:0] data_in,output packet_t data_out);

    data_out.data = data_in

  endfunction

  没有输出,通过输出变量data_out输出

4:在verilog里function只有input,没有output,返回值就是函数值;但在sv里,function增加了output,inout变量

5:参数方向类型缺省时,类型默认为logic,方向默认为input

6:引用ref

  所谓引用传递,就如c++里面的指针,也就是变量的入口地址;只有automatic型task,function可以使用ref;

  传值方式来传递参数,那么参数会被整体复制到其他地址,这样消耗一定的内存和操作时间;而用ref传值方式来传递参数,只是获得参数的入口地址,操作速度快,减少内存使用

  可在ref数组前加const,使数组不变。

 五:automatic

  一般硬件里的所有对象都是静态的;在verilog-1995,如果在多个地方调用同一个任务,本地变量是共同而且静态分配的,为此,不同的进程相互访问同一个值。在verilog-2001中,可以通过使用automatic关键字,将任务,函数和模块声明为自动存储模式,这样,仿真器就能够对所有形式的参数和内部变量使用堆栈的形式来存储。

转载于:https://www.cnblogs.com/xh13dream/p/9049879.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值