2018年IC设计企业笔试题解析-(验证方向)
1、请简述:定宽数组,动态数组,关联数组,队列四种数据类型的各自特点
解析:
(1)定宽数组:其宽度在声明的时候就指定了,故其宽度在编译时就确定了。
(2)动态数组:可以在仿真时分配空间或者调整宽度,这样在仿真中就可以使用最小的存储量。在声明时,其下标为空[ ],使用new[ ]操作符来分配空间。
(3)关联数组:SystemVerilog提供关联数组来保存稀疏矩阵的元素。一般用在对非常大的空间进行寻址,当对一个非常大的地址空间进行寻址时,SystemVerilog只为实际写入的元素分配空间,这样可以节省空间。
(4)队列:结合了链表和数组的优点。可以在队列中额任何位置增加或者删除元素,这类操作在性能上的损失比动态数组小得多,因为动态数组需要分配新的数组并复制所有元素的值。队列也可以通过索引实现对任何一元素的访问。
2、简述在TB中使用interface和clocking block的好处
解析:
(1)由于在设计当中往往含有几百个端口信号,需要数页来声明信号与端口。所有这些连接都是极易出错的。因为一个信号可能流经过几个设计层次,它必须一遍又一遍的声明和互联,最糟糕的是如果你想添加一个新的信号,它必须在多个文件中定义和连接。而通过interface,便可以解决这些问题,interface包含了连接,同步,甚至是两个或者多个块之间的通信,只要在interface里面声明过的信号与端口,在其它模块都可以共用。
(2)使用clocking block,可以保证测试平台在正确的时间点与信号交互,而不只是随着一个同步时钟采样与验证,一个时钟块,可以对应一个时钟域。
3、以下代码中,x取各个值的概率是多少?
x dist {0:=1,[1:3]:=1};
解析:
x取0,1,2,3的概率都为1/4。
4、SV OOP编程中什么需求下必须使用virtual methods(virtual function/ virtual task)
解析:
当你需要对象调用的methods(funtion或者task)可以随着真正的对象的类型去选择method而不是根据句柄的类型去调用methods的时候,你就必须将类里的method声明为Virtual method。
5、factory 实现包含哪三步?使用factory带来什么好处?
解析:
factory的实现包含三步
(1)注册:当定义一个类的时候,必须要对其类型进行注册。
(2)实例化对象:在对component或object型对象进行实例化的时候要使用静态方法create(),不能采用new()去实例化。也就是要用如下实例化格式:
object_name = class_type::type_id::create("object_name",this);
(3)重载override:在需要override的时候,按照类型或者名称去override原来的对象。
Factory的好处是便于创建模块化、可复用的测试平台。同时Factory使得类的重载与复用变得更加简单。
6、analysis port 是否不连或者可以连到多个impport?
解析:
都可以
第一,默认情况下,一个 analysis port( analysis export )可以连接多个 IMP ,也就是说, analysis port( analysis export)与 IMP 之间的通信是一种一对多的通信,而PORT 和 EXPORT 与 IMP 的通信是一种一对一的通信。 analysis port ( analysis export)更像是一个广播。
第二,作为 PORT 和 EXPORT ,有 put, get, transport 操作,虽然如前面所示,一个 PORT 要么是 put_port,要么是 get_port,要么是 transport_port ,不可能是三者兼有,但是毕竟是有这三种操作。但是对于 analysis port( analysis export)来说,它只有一种操作 write 。 write 的意思就是广播一下,剩下的事情就与他无关了。
第三,作为 PORT 和 EXPORT,都有阻塞和非阻塞的区分。相应的 put, get,transport 操作也分成了阻塞和非阻塞的。但是对于 analysis port 和 analysis export 来说, 没有阻塞和非阻塞的概念。 因为它本身就是广播, 不必等待与其相连的其它 port的响应。所以不存在阻塞和非阻塞。
7.请简述一个slave vip的 dataflow
解析:
Driver 向sequencer申请发生请求,然后sequencer通过sequence里面的body产生激励信号再发送给Driver,Driver再把激励信号转换为可以驱动DUV的时序信号。
8.runphase和 mainphase能不能同时存在?为什么?
解析:
可以同时存在,
UVM 把 run_phase 又分割成了 12 个小的 phase, 这 12 个小的 phase各自在执行顺序方面与 run_phase 完全相同,即自下而上的启动,同时运行。
这 12 个动态运行的 phase 与 run_phase 之间有什么关系。从本小节的图中可以看出,这 12 个动态运行的 phase与 run_phase 之间是并列的关系,这是不是也意味着它们之间的执行也是并列的呢?答案是确定的。
9.如果一个模块的寄存器接口由APB变为AXILite,在寄存器模型的使用中需要做什么改变?
解析:
因为AXI-lite相对于APB而言的数据读写通道是分离的,控制和数据通道分离,就可以不等需要的操作完成,就发出下一个操作,流水线操作,所以要从field字段属性,和register属性和registerfile三个方面修改,要创建对应的RAL适配器;
要添加如下的信号:
(1)读地址通道,包含ARVALID, ARADDR, ARREADY信号;
(2)读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;
(3)写地址通道,包含AWVALID,AWADDR, AWREADY信号;
(4)写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;
(5)写应答通道,包含BVALID, BRESP, BREADY信号;
(6)系统通道,包含:ACLK,ARESETN信号。
10、什么情况使用宏定义,什么情况使用运行时参数?
解析:
Verilog
1)宏
全局作用范围,且可以用于位段或类型定义。当需要局部常量时,可能引起冲突。
2)Parameter
作用范围仅限于单个module
12:cpu在芯片中的主要作用有什么?
解析:
cpu简称中央处理器,它是软硬交互的一个节点,通过写C代码可以控制硬件电路的工作,CPU在这里就是将C代码经过编译器得到的机器码转化为对具体电路的控制和逻辑运算。例如:在C代码里要完成对某soc芯片内部一个寄存器的读写操作,那么在芯片内部中,cpu一般作为总线上的master控制总线,通过对总线的读写操作,进而控制在总线上slave模块的读写控制。
13:arm中执行的c程序如何和uvm的seq进行交互。
解析:
SystemVerilog可以通过DPI,与C/C++语言进行交互。在UVM的Sequence里面通过调用DPI接口,完成交互。arm中的c程序,在硬件里,就是执行一段二进制代码,属于DUV的部分,相当于uvm和duv内部进行交互,获取c程序(实际为2进制程序)执行的中间结果。

SystemVerilog基本语法总结(下)的更多相关文章

  1. 从认识面向对象到构造函数的标准写法(构造函数的继承、多态、ECMA6中新代替语法class) - 下

    笔记一个包含:认识面向对象.构造函数的封装.继承.多态.ECMA6中新代替语法class 下:包括构造函数的继承.多态.ECMA6中新代替语法class 构造函数的继承 从父一级延续下来的属性和功能( ...

  2. Java编程基础阶段笔记 day04 Java基础语法(下)

    day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...

  3. SystemVerilog基本语法总结(上)

    SystemVerilog基本语法总结(上) 在总结SV的语法之前,先分享一些关于SV的笔试题目,这样更显得具有针对性的总结. a. 验证中,代码覆盖率是指(衡量哪些设计代码在激活触发,而哪一些则一直 ...

  4. SystemVerilog基本语法总结(中)

    Systemverilog 语法总结(中) 上一个博客分享了SV基本的概念,这一博客继续分享,等下一个博客分享一个公司的验证的笔试题目. l 事件 背景: Verilog中当一个线程在一个事件上发生阻 ...

  5. javaScript基础语法(下)

    4.逻辑控制语句 4.1条件结构 条件结构分为if结构和switch结构. 通常在写代码时,您总是需要为不同的决定来执行不同的动作.您可以在代码中使用条件语句来完成该任务. 在 JavaScript ...

  6. ES6常用语法(下)

    Symbol类型      ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突.如果有一种机 ...

  7. Jade学习(三)之语法规则下

    jade可以自动识别单双标签 // 1.jade内容: input(type="button", value="点击") div // 此时输出❌error:i ...

  8. ECMAScript 5.0 基础语法(下)“稍微重点一点点”

    接上篇 七.常用内置对象(复杂数据类型)(重点) (1)数组Array 创建:例  var colors = ['red','blue','green']       #推荐这样,因为简单粗暴 或:v ...

  9. 3、Java基础语法(下):程序流程控制

    程序流程控制 从键盘获取不同类型的变量: 使用Scanner类,具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = ...

随机推荐

  1. char **argv 与char *argv[]

    1.char **argv 分析:argv是一个指针变量,argv的指向(*argv)是char *,也就是argv指向的也是一个指针 : *argv的指向(**argv)是char. 2.char ...

  2. [面试必备]深入理解Java的volatile关键字

    前言 在Java并发编程中,volatile关键字有着至关重要的作用,在面试中也常常会是必备的一个问题.本文将会介绍volatile关键字的作用以及其实现原理. volatile作用 volatile ...

  3. Vue 项目 在局域网内访问

    之前在百度上看到过很多中  关于局域网访问项目的方法, 在这里,个人推荐两种比较喜欢的方法 一.直接在项目的package.json文件中进行配置 ,代码如下 "scripts": ...

  4. PCB设计要点

    pcb要点 : 2014年8月5日 13:04 一地线设计 1.1分类模拟地.数字地.外壳地.系统大地 1.2接地方式:单点接地(f<1MHZ,避免环流),多点接地(f>10MHZ降低地线 ...

  5. 的aspnet_client文件夹

    在早期,有一些asp.net组件是默认要调用(从客户端调用)服务器根(域名)下这个子目录里边的文件的. 不过如果你使用高版本的asp.net,那么全都从你的网站里调用了,因为asp.net有了更好地直 ...

  6. 通过aptitude降级包解决依赖问题(E:无法修正错误,因为您要求某些软件包保持现状)

    Linux下的依赖关系令人头疼,尤其是提示如下错误的时候: 下列软件包有未满足的依赖关系: xxx : 依赖: xxx 但是它将不会被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破 ...

  7. html5 postMessage 消息传递问题

    <script type="text/javascript"> $.fn.extend({ addEvent: function (type, handle, bool ...

  8. CSS - 表格细线边框

    通过 border-collapse: collapse cellpadding="0", cellspacing= "0" 实现 <!DOCTYPE h ...

  9. MySQL之正则

    八:正则匹配: 语法: select * from 表名 where 字段名 regexp "正则表达式"; PS:MySQL中正则匹配,不能使用\w等字幕作为匹配

  10. 5-2 使用antDesign的Table 及 modal(对话情景框) 功能

    1,进入antDesign官网,粘贴table代码 2,看代码各个部分实现什么功能,根据需求改代码 表格类似如下: 代码如下: const columns = [ { title: 'Name', d ...