江哥nb!

今天的头版必须给到江哥,华为树枝江哥,FPGA设计岗,两年工资翻倍,年薪突破50,月薪突破30,向江哥学习!

想做江哥的水花兄弟,差个11号球衣 

——————————————————————————————————————————

今天完成031-038,有关类的知识

  • 035-037 类

    • 这个世界由无数的类class和对象object构成的,class是将系统个体抽象出来的描述方式,object是实体,具备独立行为的能力
    • 面向对象编程的三要素:封装,继承,多态
    • 类的定义核心:属性声明和方法定义,类是数据和方法的自洽体,既可以保存数据和处理数据。
    • 区别于struct结构体,结构体只是单纯的数据集合,不能处理
    • 验证世界中的类
      • stimulator生成激励内容给到接口
      • driver将激励以时序的形式发送到DUT
      • monitor检测信号记录数据
      • 比较器checker比较数据
    • transaction事务类
      class transaction
      bit [31:0] addr,crc,data[8];function void display;
      $display("transaction: %h",addr);
      endfunction:displayfunction void calc_crc;
      crc=addr^data.xor;
      endfunction:calc_crcendclass:transaction

      class换成module即可,软件盒子和硬件盒子

    • class中的变量默认是动态变量,软件盒子只能定义软件变量,bit是var变量,不能定义成硬件世界的reg和wire。
    • 接口的指针可以传递到类中,获得硬件世界的信号
    • class中不能出现initial和always
  • transaction tr;
    //声明句柄,
    tr=new();//创建对象,通过函数new完成例化//可以合并成
    transaction tr=new();
  • 创建对象实际就是开辟了新的内存空间,用来存放新的成员变量和方法
  • 创建对象时可以通过自定义构建函数完成变量的初始化和其他初始操作
    class transaction;
    logic [31:0] addr, crc, data[8];
    //new()是系统预定义函数,不需要指定返回值,函数会隐式的返回例化后的对象指针
    function new();
    addr=3;
    foreach (data[i]) data[i]=5;
    endfunctionendclass
  • 任何一个类都需要new函数
  • 构建函数也可以定义多个参数作为初始化时外部传入数值的手段
    class transaction;
    logic [31:0] addr='h10;
    logic [31:0] crc,data[8];
    function new(logic [31:0] a=3,d=5);
    addr=a;
    foreach (data[i]) data=d;
    endfunction
    endclassinitial begin
    transaction tr;
    tr=new(10);
    //10传递给了a
    end

    在完成对tr的初始化后tr.addr的值时多少?

    答:定义变量时是16,定义new时把a=3传递给addr,调用时是10,new开辟空间,完成了16的初始化,然后进入到new才把10给进来,所以结果是10。默认参数是3,如果没给10就是3,但是给了10,3就不用考虑了。

  • 句柄:就是指针
    transaction t1,t1;//声明句柄t1t2,悬空的指针,没有指向对象
    t1=new();//例化对象,t1指向第一个对象1
    t2=t1;//t1赋给t2,也就是两个句柄指向同一个对象1
    t1=new();//t1指向对象2//看到一次new就是例化了对象
    //定义一个类,名字是word
    class word
    byte nb[];
    //注意:定义动态数组nb给的值时用[],而new是用()
    function new(int n);
    nb=new[n];//分配n个元素给动态数组nb
    endfunctionendclassinitial begin :initial_1
    word wd;//类word的句柄是wd
    for(int i=1; i=4;i++) wd=new(i);//做4次例化
    endinitial begin :initial_2
    #1ps
    $display("How many bytes are allocated for word instances?");
    end

    1ps后wd这个变量依然存在,因为是在initial里面声明的。

如果在word前面加上automatic,执行完就销毁句柄和对象了,下面的答案就变成0B

  • 例化4次,假设每次开辟1B的空间,所以在display需要开辟4B的空间

class里面定义的变量都是动态变量,如果加上static就可以是静态变量,可以用句柄来索引,t2.count,也可以用class名来索引,transaction::count

静态方法里面可以声明并使用动态变量,但是!不能使用类的动态成员变量,因为没有为动态变量开辟空间

class transaction;
static config cfg;//静态变量,一开始就有空间
static int count=0;
int id;static function void display_statics();
$display("transaction cfg.mode=%s, count=%0d", cfg.mode.name(), count);
//静态方法调用类里边静态的成员变量
//如果在这里声明动态变量,也是可以的
endfunction
endclassconfig cfg;
initial begin
cfg=new(MODE_ON);
transaction::cfg=cfg;//索引到类里边的变量
transaction::display_statics();//和方法,调用静态方法
end

电力电子转战数字IC20220613day23——江哥nb!相关推荐

  1. 电力电子转战数字IC——路科MCDF全览(持续更新)

    经过两次面试后,对MCDF做一次全面的深入总结. 目前进度:硬件部分的node,fifo,寄存器,formatter,MCDF顶层,APB接口,TB接口 软件部分的chnl_pkg,fmt_pkg,a ...

  2. 电力电子转战数字IC——我的IC笔试(2022.10.14更新)

    IC笔试有:JL科技.TR半导体.HZW.MX半导体.RSKX.TCL 部分题目暂时还是做不出来,先好好复习一遍,会有柳暗花明的时候的. 目录 RY10.11 TCL10.9 位宽定义正确的是 逻辑与 ...

  3. 电力电子转战数字IC——我的IC面试(2022.10.14更新)

    目录 感谢信 HKWS10.14面试 25mins JXC10.13面试 30mins JDSK9.23面试 42mins 快速的自我介绍 介绍一下这个MCDF的项目 你这里写SV搭建的验证环境,和U ...

  4. 电力电子转战数字IC20220727day57——寄存器模型(续)

    rgm的常规方法 关于reg的三个值 mirrored value镜像值:由模型预测给出,即在前门访问时通过观察总线.在后门访问时通过自动预测等方式给出 desired value期望值:先利用rgm ...

  5. 电力电子转战数字IC20220629day35——路科实验2b

    目录 tb3代码改造 tb3代码 tb4改造思路: tb4结构示意图 tb4代码 basic_test burst_test full_test 首先复习一下类的知识点 CSDNhttps://mp. ...

  6. 电力电子转战数字IC20220819day64——uvm实战1A

    目录 MCDF改造 APB接口 验证环境的改造 实战任务 apb_config apb_master_agent apb_master_driver 1.1实现apb_master_driver的dr ...

  7. 电力电子转战数字IC20220711day45——SV终章

    至此,SV的学习结束,实验4和实验5等回头过来重做,一定要到完全理解为止.SV DAY30 类型转换 分类:静态转换,动态转换 静态转换:在需要转换的表达式前面加上单引号,不会对转换值检查,如果转换失 ...

  8. altera fpga sdi输出方案_FPGA在电力电子中的应用有哪些?

    大家好,很抱歉上周末没有及时更新公众号,本来这期想聊聊IGBT的拖尾电流,但是由于周末去深圳高交会(高新技术成果交易会)逛了一天,时间给耽搁了,感觉要想把拖尾电流讲清楚也不太容易,还得需要点时间,为了 ...

  9. 电力电子、电机控制系统的建模和仿真_电力传动控制系统:运动控制系统

    本书是普通高等教育电气工程与自动化类"十一五"规划教材,主要是针对电气工程及其自动化.自动化等专业大学本科编写的.为适应教学改革和学科发展的需要,本书在陈伯时主编的<电力拖动 ...

最新文章

  1. 浅析企业自助建站系统的特性
  2. 使用VS2019开始第一个C语言程序,环境安装配置+代码实例
  3. 《代码整洁之道:程序员的职业素养》一一1.5 参考文献
  4. c#文本框只能填入数字和字母
  5. 深入理解Java类加载器:Java类加载原理解析
  6. 浅谈Java泛型中的? extends E和?super E
  7. Trial SCN WebIDE版本下载
  8. 循环数组对象 php,PHP循环遍历stdClass对象的数组
  9. 【图论】(二分图)J. Burnished Security Updates - CodeForces
  10. mvc 视图和模型的对应_通过在酒吧订购饮料来解释模型视图控制器(MVC)
  11. (1).数据结构概述
  12. java的static类_java中staticclass静态类详解
  13. ubuntu + vmware7.0 gmake not found
  14. jquery获取div/div之间的内容.text() 和 .html()区别
  15. postgreSQL源码分析——索引的建立与使用——GIN索引(1)
  16. 除了 Coding,程序员获得收入的四大途径!
  17. 拔染印花几点注意事项
  18. 【虚拟机】VMware启动时报错:该虚拟机似乎正在使用中....请按“获取所有权(T)”按钮获取它的所有权
  19. zabbix 自动发现 自动添加主机
  20. 框架的配置文件的映射机制

热门文章

  1. 【日常分享】下载没水印的抖音视频
  2. 动力节点『lol版』Java学习路线图(一)准备工作
  3. 程序员的十层楼,你在第几层???
  4. 2021年最新的安防芯片方案
  5. utf-8的中文汉字
  6. 门禁巨头遭勒索攻击,北约、阿里集团等多个实体受到影响
  7. 【数据结构】校园地图导航---主函数 景点查询函数
  8. 网上拍卖系统/拍卖网站
  9. [转]屏幕保护色的设置
  10. 魅族16th系统更新服务器异常,魅族16th迎来新系统更新:修复Bug 加入暗光面部解锁...