SystemVerilog学习整理——过程块和方法

目录

2、SystemVerilog——过程块和方法(initial、always、task、function、automatic和static)

2.1initial和always

2.1.1always

2.1.2initial

2.2task和function

2.2.1函数function

2.2.2任务task

2.2.3Task和function的比较

2.3子程序参数

2.4子程序返回

2.5变量的生命周期

2.5.1定义为自动存储automatic

2.5.2program的优势

2.5.3Program的功能

2.6时间值

2.6.1 描述时间单位和精度

2.6.2 时间参数


2、SystemVerilog——过程块和方法(initial、always、task、function、automatic和static)

2.1initial和always

  1. always、module、interface:硬件世界
  2. program,class:软件世界

        从硬件实现的角度来看,Verilog通过always,initial过程语句块、信号数据连接来实现进程间通信,我们将不同的module作为独立的程序块,他们之间的通信和同步通过信号的变化(event触发)或者通过等待特定事件(时钟周期)或者时间(固定延时)来完成。

2.1.1always

        1)always是为了描述硬件的行为,而在使用时需要注意哪种使用方式是时序电路描述,哪种使用方式是组合电路描述。

        2)always中的@(event..)敏感列表是为了模拟硬件信号的触发行为,同学们需要正确对标硬件行为和always过程块描述。

        3)always过程块是用来描述硬件时序电路和组合电路,只可以在module或者interface中使用。

2.1.2initial

        1)initial与always在执行路径上有明显区别,initial非常符合软件的执行方式,即只执行一次。

        2)initial和always一样,无法被延迟执行,即在仿真一开始它们都会同时执行,而不同的initial和always之间在执行顺序上没有顺序可言,不能将它们在代码中的前后顺序与它们的执行顺序画上等号。

        3)initial从其执行路径的属性来看,它不应该存在于硬件设计代码中,它本身不可综合,对于描述电路没有任何帮助。

        4)initial是为了测试而生的,由于测试需要按照时间顺序的习惯,即软件方式。

        5)在Verilog时代,所有的测试语句都可以被放置在initial中,为了便于统一管理测试顺序,建议将有关测试语句都放置在同一个initial过程块中。

        6)initial过程块可以在module、interface和program中使用。对于过程块的书写方式,需要使用begin..end将其作用域包住,同样适用于控制语句、循环语句等等。

2.2task和function

2.2.1函数function

        1)可以在参数列表中指定输入参数(input)、输出参数(output).输入输出参数(inout)或者引用参数(ref)。

        2)返回数值或者不返回数值(void)。

        3)默认的数据类型是为logic,例如input [7:0] addr。数组可以作为形式参数传递。

        4)function可以返回或者不返回结果,如果返回即需要用关键词return ,如果不返回则应该在声明function时采用void function().

        5)只有数据变量可以在形式参数列表中被声明为ref类型,而线网类型则不能被声明为ref类型。

        6)在使用ref时,有时候为了保护数据对象只被读取不被写入,可以通过const的方式来限定ref声明的参数。

        7)在声明参数时,可以给定默认数值,例如input[7:0] addr = 0,同时在调用时如果省略该参数的传递,那么默认值即会被传递给function。

2.2.2任务task

        1)task无法通过return返回结果,因此只能通过output、 inout或者ref的参数来返回

 

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Like_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值