前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【日更计划102】数字IC基础题【SV部分】

【日更计划102】数字IC基础题【SV部分】

作者头像
空白的贝塔
发布2021-04-23 15:31:11
4920
发布2021-04-23 15:31:11
举报
文章被收录于专栏:摸鱼范式摸鱼范式

欢迎大家加入2022届数字IC交流群,QQ群号 1060380138

上期答案

[231] 下面两种代码风格哪种更加好?为什么?
代码语言:javascript
复制
1)
for (i=0; i < length*count; i++) begin
    a[i] = b[i];
end
2) 
l_end = length * count;
for (i=0; i < l_end; i++) begin
    a[i] = b[i]
end

2比1更好,在1中,每次迭代都需要计算length*count,2中只需要计算一次

[232] 下面的代码有什么错误?
代码语言:javascript
复制
class ABC;
    local int var;
endclass

class DEF extends ABC;
    function new();
        var = 10;
    endfunction
endclass

变量var具备local关键字,在派生类中是不可用的。

[233] 什么是虚接口,何时使用它?

虚接口是指向实际结构的变量。他在类中用于提供接口的连接点,通过虚接口可以访问接口中的信号。在下面的示例中,接口bus_if将多个信号整合起来。然后,BusTransactor类中定义了这一接口类型的虚接口,这个虚接口用于访问来自this.b_if的所有驱动或检测。实例化物理接口以后,通过构造函数将句柄传递给BusTransactor类。

代码语言:javascript
复制
interface bus_if; // A bus interface
    logic req, grant;
    logic [7:0] addr, data;
endinterface
 
class BusTransactor; // Bus transactor class
    virtual bus_if bus; // virtual interface of type bus_if
    function new( virtual bus_if b_if );
        bus = b_if; // initialize the virtual interface
    endfunction
    
    task request(); // request the bus
        bus.req <= 1'b1;
    endtask
    
    task wait_for_bus(); // wait for the bus to be granted
        @(posedge bus.grant);
    endtask
endclass
 
module top;
    bus_if bif(); // instantiate interfaces, connect signals etc
    initial begin
        BusTransactor xactor;
        xactor = new(bif);   //pass interface to constructor
    end
endmodule
[234] 工厂和工厂模式的意思是?

在面向对象编程中,工厂是用于创建原型或类的不同对象的方法或函数。不同的类在工厂中注册后,工厂方法可以通过调用相应的构造函数来创建任何已注册类类型的对象。创建对象不直接调用构造函数的模式称为工厂模式。使用基于工厂的对象创建而不是直接调用构造函数,允许在对象创建中使用多态性。这个概念是在UVM (Univers)中实现的。

[235] 回调函数(callback)的意义是什么?

“回调”是由另一个函数调用的任何函数,它以第一个函数为参数。大多数情况下,当某个“事件”发生时,会调用回调函数。在验证平台中,回调函数很多优点:

  1. 注入从驱动程序发送的事务错误
  2. 当一个模拟阶段准备结束时,调用一个函数来关闭所有序列/驱动程序中所有挂起的事务。
  3. 在一个特定的事件上调用一个覆盖率采样函数。

大多数情况下,回调函数是通过将它们注册到一个组件/对象中来实现的,该组件/对象会在某些定义的条件下回调。UVM中的phase_ready_to_end()就是回调函数,它在基类中实现,并注册到UVM_component类中。当当前仿真阶段准备结束时,将调用该函数。因此,用户可以通过覆盖此函数定义来实现需要在仿真阶段结束时执行的任何功能。

本期题目

236] 什么是DPI调用?
[237] “DPI import” 和“DPI export”有什么区别?
[238] 什么是系统函数?举例说明他们的作用
[239] 定向测试和受约束的随机测试有什么区别?两者有什么优缺点?
[240] 什么是自检测试(self-checking tests)?

正确答案将在下一期公布,或者到下面的文章获取答案

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 摸鱼范式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上期答案
  • 本期题目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档