数字验证学习笔记——SystemVerilog芯片验证10 ——类的成员

news2025/7/13 23:48:12

一、类和成员

类是成员变量和成员方法的载体,之所以称为自洽体,是因为其变量和方法应符合‘聚拢’原则,即一个类的功能应该尽可能简单,不应承担过多的职责,更不应该承担不符合它的职责,这在设计模式被称为单一职责原则。
类作为载体,也具备天生的闭合属性,将其属性和方法封装在内部,不会直接将成员变量暴露给外部,通过protected和local关键词来设置成员变量和方法的外部访问权限。所以封装属性在设计模式被为开放封闭原则。
class clock
local bit is_summer=0;
local int nclock=6;
function int get_clock();
if(!is_summer) return this.nclock;
else return this.nclock+1;
endfunction
function bit set_summer(bit s);
this.is_summer =s;
endfunction
endclass

clock ck;
initial begin
ck=new();
$dispaly(" now time is %d", ck.get_clock() );
ck.set_summer(1) ;
$dispaly(" now time is %d", ck.nclock); // local 设置 nclock ,外部句柄无法访问,编译不通过
end

如果没有指明访问类型,那么成员的默认类型是public,子类和外部均可以访问。
如果访问类型protected,只有该类和其子类可以访问,外部无法访问。
如果访问类型local, 只有该类自己可以访问,子类和外部无法访问。

类和结构体的异同

  • 两者本身都可以定义数据成员
  • 类变量声明后,需要构造(construction)才会构建对象(object)实体,而struct在变量声明时已经开辟内存。
  • 类除了可以声明数据成员变量,还可以声明方法(function/task),而struct则不能。

类和模块的异同
在这里插入图片描述
可以在哪里定义类?
module、interface、program和package

可以在类中声明类成员么?
可以

what is this?
this 表明所调用成员是当前类的成员,而非同名的局部变量或者形式参数等
function new( string name);
this.name = name;
endfunction

类的编译有先后顺序?
有,先编译基本类,再编译高级类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变分自编码器(VAES)

Dimensionality reduction ,PCA and autoencoders Dimensionality reduction 我们清楚,数据降维其实都是减少数据的特征数量,如果把encoderencoderencoder看作是由高维原有特征生成低维新特征的过程。把decoderdecoderdecoder看作是将低维特征还原为高…

vulnhub靶机ha:wordy

靶机下载链接:HA: Wordy ~ VulnHub 靶机ip:192.168.174.136(后面重启后变成192.168.174.137) kali ip:192.168.174.128 目录 靶机ip发现: 靶机端口扫描: 子目录扫描: wpscan扫描 漏洞利用1 漏洞利…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数: 型号:MBR40200PT 最大重复峰值反向电压(VRRM):200V 最大平均正向整流输出电流(IF):40A 峰值正向浪涌电流(IFSM&#xff0…

5、Mybatis的查询功能(必定有返回值)

Mybatis的查询功能(必定有返回值) 注意: 查询功能与前面的增删改不同,增删改的返回值是固定的(所以增删改我们就有两种返回值要么设置为int获取受影响的行数,要么设置为void我们不获取返回值)…

基于JAVA的农产品生鲜销售管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86468222 主要使用技术 Struts2HibernateJSPJSCSSMysql 功能介绍 1,游客访问 |–系统首页,查看商品列表 |–特价商品 |–最新上架 2,会员访问 |–用户登…

Qt 界面设置无边框之后如何实现缩放界面

在qt中,如果设置的了窗口无边框的话(即setWindowFlag(Qt::FramelessWindowHint);)那么窗口就没法直接被鼠标拖动了,也没法按住窗口的边界进行缩放。 如果要实现缩放和拖动,一般来说就需要的重写窗口类的mousePressEve…

目标检测论文解读复现之十九:基于YOLOv5网络模型的人员口罩佩戴实时检测

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

8.3 数据结构——交换排序

基本思想:两两比较,如果发生逆序则交换,直到所有记录都排好序为止。 常见的交换排序:(1)冒泡排序 (2)快速排序 8.3.1 冒泡排序 基本思想:每趟不断将记录两两比较&…

VLAN(Virtual LAN)虚拟局域网

1、广播与广播域 广播:将广播地址做为目标地址的数据帧 广播域:网络中能接收到同一个广播所有节点的集合(广播域越小越好,收到的垃圾广播越少,这样通信效率更高) MAC地址广播 广播地址为:FF-FF-…

rabbitmq配置windows authentication(windows account)登录

rabbitmq配置windows authentication(windows account开启插件配置文件创建一个不需要密码的账号,赋予administrator权限。用windows账号和密码登录rabbitmq加密明文密码创建密钥的文件,添加密钥字符串加密解密用户名密码配置加密后的字符串重启rabbitmq&#xff0c…

HyperLynx(三十一)高速串行总线仿真(三)

高速串行总线仿真(三) 1.从一个多层板工程中验证串行通道 2.在多层板中设置连接器模型 1.从一个多层板工程中验证串行通道 在本例练习中,将集中研究从芯片到插件形成的串行发射通道,并分析它的性能。 (1)打开 HyperLynx 软件&a…

Centos下安装postgreSQL

最近北京yq严重,在家学习下postgreSQL ,本次使用的是 Centos 环境安装是有,记录下来,方便备查。 第一步、下载与安装 下载地址:postgreSQL官网 在官网上选择 Linux系统,使用 yum来下载软件,只…

SpringBoot SpringBoot 原理篇 1 自动配置 1.11 bean 的加载控制【编程式】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.11 bean 的加载控制【编程式】1.11.1 bean 的加载控制1.11.2 环境…

[附源码]Python计算机毕业设计高校辅导员工作管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

现代密码学导论-15-多明文加密

目录 3.4更强的安全观念 3.4.1 多明文加密安全 多消息窃听实验 DEFINITION 3.18 多明文加密下的不可区分性 PROPOSITION 3.19 定义3.18强于定义3.8的事实证明 PROPOSITION 3.19 的证明 概率加密的必要性 THEOREM 3.20 3.4更强的安全观念 到目前为止,我们一…

MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧

目录 前言 1、如何开启使用慢查询日志? 1.1 开启慢查询日志 1.2 设置慢查询阈值 1.3 确定慢查询日志的文件名和路径 1.3.1 查询MySQL数据目录 1.3.2 查询慢查询日志文件名 1.3.3 查询全局设置变量 1.3.4 查询单个变量命令 1.3.5 其他注意事项 2、如何定位并优…

备战2023蓝桥国赛-重新理解Prim和Kruskal算法

备战2023蓝桥国赛-重新理解Prim和Kruskal算法Prim算法Kruskal算法Prim算法 题目描述: 解析: prim算法跟dijkstra的朴素解法有很多相像部分,他们都是枚举中继节点来更新下一个节点,都是选最小的dist值来更新,时间复杂…

【线性表】—动态顺序表的增删查改实现

小菜坤日常上传gitee代码:https://gitee.com/qi-dunyan(所有的原码都放在了我上面的gitee仓库里) 数据结构知识点存放在专栏【数据结构】后续会持续更新 ❤❤❤ 个人简介:双一流非科班的一名小白,期待与各位大佬一起努…

【网页设计】期末大作业html+css(动漫网站)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【机器学习项目实战10例】(十):DataCastle-租金预测

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、DataCastle-租金预测二、数据集介绍三、导入相关库四、读取数据五、删除缺失值过多的列六、填补缺失数据七、特征编码八、简单跑一下九、可视化数据分布9.1 箱线图9.2 直方图和Q-Q图一、DataCastle-租金预测 本项目任务…