《systemverilog验证》阅读笔记 -- 过程语句和子程序
来源:互联网 发布:yy音效软件下载 编辑:程序博客网 时间:2024/06/03 02:27
- 过程语句
- 条件
- if
- case
- 循环
- for
- while
- continue
- break
- 条件
- 子程序
- 参数
- return
- 带返回值的子程序
- 自动存储automatic
过程语句
条件
if
case
循环
for
while
continue
break
子程序
function和task的使用,与verilog语法不太一样。主要区别:
- function可以不带返回值
- function里可以调用task;线程章节会介绍。
- function/task不需要begin…end包含了。
- task的参数,更灵活;比module的参数设置还灵活。
基于此特点,
可以定义用于debug的function了。
function void print_state(...); $display("@%0t,state=%s",$time,current_state.name());endfunction
参数
function void print_checksum(const ref bit[31:0] a[]); bit[31:0] checksum=0; for(int i=0;i<a.size();i++) checksum ^= a[i]; $display("The array checksum is %0d",checksum);endfunction
其中const,是指参数变量不能改变,否则编译报错;
ref代表数组参数的传递,注意整个子程序需要是automatic属性,即自动存储。后文再讨论。
ref还有个好处,是用于线程的。后文再讨论。
return
出现错误的时候,跳出子程序。
带返回值的子程序
function void init(ref int f[5], input int start); foreach(f[i]) f[i]=i+start;endfunctionint fa[5];initial begin int(fa,5); foreach(fa[i]) $display("fa[%0d]=%0d",i,fa[i]);end
自动存储automatic
多线程的时候用到。
比如某个task,被多次调用,为了不让变量互相干扰。从verilog的默认静态共享,变为自动存储类型。后文再说吧。
0 0
- 《systemverilog验证》阅读笔记 -- 过程语句和子程序
- 《systemverilog验证》阅读笔记 -- 数据类型
- 《systemverilog验证》阅读笔记 -- 连接设计和测试平台
- 《systemverilog验证》阅读笔记 -- 面向对象编程基础
- 谈谈验证中的SystemVerilog和CPP
- ORACLE PL/SQL子程序--过程和函数学习笔记
- Oracle数据笔记-【5】子程序(存储过程)和函数
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
- SystemVerilog笔记------散记
- 《基于spyglass同步设计分析和静态验证》阅读笔记
- 子程序调用语句
- C++primer 阅读笔记----------语句
- 存储函数和存储过程(PL/SQL子程序)
- Oracle子程序之函数(function)和过程(procedure)
- SystemVerilog 学习笔记--randomize function
- SystemVerilog 学习笔记-----环境check
- SystemVerilog学习笔记 - 动态数组
- 【Oracle】子程序与过程
- ssh整合出现的问题
- Webservice - Demo : Hello + Name (客户端篇)
- 和小小婷一块儿学Python--Python初见面
- Servlet中jsp修改后浏览器页面没有变化——已解决
- MediaRecorder
- 《systemverilog验证》阅读笔记 -- 过程语句和子程序
- PIC单片机入门_PICC的指向RAM的指针
- 构建高并发高可用的电商平台架构实践
- 硬件设计の运算放大器の一
- POJ 3169 Layout 差分约束系统
- Reducers may not dispatch actions
- 基础练习 特殊回文数
- 玲珑oj 1046- chess play【水】
- Linux文件与目录管理