ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【无标题】

2022-03-02 21:30:00  阅读:171  来源: 互联网

标签:调用 sequencer res 端口 无标题 数组 new


new()为一个对象分配空间,初始化变量,并返回保存对象的地址。
new[]设定动态数组的大小。动态数组在最开始是空的,必须通过调用new[]来分配空间,同时在方括号中传递数组宽度;

数组和队列的区别在于,数组的长度一旦确定就不可更改,但是队列不一样,队列的初始长度是0,可以用插入,pop,push等方法向里面塞入数据。调用delete方法删除。

动态数组需要new,队列不需要

uvm_do_on用于显式指定那个sequencer发送此transaction。第一个是transaction 指针,第二个是sequencer 指针

 使用uvm_do 时,默认的sequencer 就是此sequence 启动时为其指定的sequencer,sequence 将这个sequencer 的指针放在其成员变量m_sequencer 中。等价于:

modport可以定义不同信号接入接口的方式(input、output、inout、ref),可以为信号指定方向,所以它定义在接口里面;

interface是将多组信号合成一起由一个端口表示,简化模块之间的连接,实现类与模块之间的通信。

automatic是把函数或任务中的变量声明为动态,这样在任务执行完之后,变量就进行销毁,即用即扔;而声明为static,则为静态,生命周期贯穿整个仿真,且全局只有唯一一个该静态变量。

比较TLM端口和mailbox的区别:TLM端口可以自己实现put和get方法,比较灵活;其次,TLM端口用于组件之间的通信,无需通过句柄层层传递,降低了组件之间的耦合性,使得验证环境更加独立。

mailbox本身就是一个原生的轻量级fifo,有get()方法,put()方法。

mailbox #(trans) res;

tans a;

res=new();

res.get(a);res.put(a);

虚函数是sv类中多态性的变现,即可以通过指针指向的对象通过动态查找来决定调用哪个函数,加了之后可以使得父类句柄在指向子类对象的时候可以调用子类方法,没加只能声明子类句柄来调用。

Sv与verilog相比的优点?

答:提供了logic数据类型,避免小白出错。提供了interface,使得硬件和验证环境的连接更加简便。提供了面向对象编程的类,同时类的三要素使得在构建验证环境时候更加简便。提供了多个数据类型,在构建软件验证环境时能更多地做好随机化。

interface是将多组信号合成一起由一个端口表示,简化模块之间的连接,实现类与模块之间的通信。

为什么需要clocking:利用clocking进行采样是为了避免信号竞争问题,它可以定义数据延迟或者提前进行采样,使得采样数据更加稳定。

illegal bin触发会怎样?答:报错、仿真停止。

Rand bit data[100],约束随意一位是0,剩下的为1。

foreach(a[i])

a[i] dist {0:=1,1:=99};

Rand data0~a?

class trans; 

 int a;

 rand int b; 

 constraint cr {a inside {[0:b]};}endclass

标签:调用,sequencer,res,端口,无标题,数组,new
来源: https://blog.csdn.net/xesxz_/article/details/123230861

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有