首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
数字IC小站
哲库科技_前端设计工程师
获赞
115
粉丝
326
关注
0
看过 TA
744
男
上海交通大学
2021
自动化
IP属地:广西
公众号--数字IC小站
私信
关注
拉黑
举报
举报
确定要拉黑数字IC小站吗?
发布(99)
评论
刷题
数字IC小站
关注TA,不错过内容更新
关注
2022-06-27 01:53
哲库科技_前端设计工程师
SystemVerilog中interface的几点理解
最近吃了没文化的亏,想来就把interface好好看看。 在SV中常用interface连接端口,它的好处在于,方便了在sv中模块声明中不需要一个个的写端口,直接在端口中实例化一个interface即可。接口中还可以包含任务函数、断言等等。说多了咱也记不住,就说这点吧。不过我觉得最好用的还是第一点哈。 interface的推荐写法 interface v_if(input bit clk); logic [31:0] data; ..... clocking cb@(posedge clk) //需要包含resetn ...
0
点赞
评论
收藏
分享
2022-06-27 01:58
已编辑
哲库科技_前端设计工程师
Clifford论文系列多异步时钟设计的综合及脚本技术(2)
5.传递多个控制信号 在进行跨时钟域设计时经常犯的一个错误是简单的将多个控制信号从一个时钟域传递到另一个时钟域,而忽略了控制信号排序的重要性。简单地在所有控制信号上使用同步器并不总是足够好的。如果控制信号的顺序或对齐是重要的,必须注意将信号正确地传递到新的时钟域。 1.同时需要所有的控制信号 也就是说,所有跨时钟传递的控制信号都要同时到达。在下图所示的示例中,新时钟域中的寄存器需要负载信号和使能信号才能将数据值加载到寄存器中。如果负载信号和使能信号都是从一个时钟域发送的,那么这两个控制信号之间的小偏差就有可能导致两个信号到达目的时钟域时属于不同的时钟周期,这个就有可能导致...
0
点赞
评论
收藏
分享
2022-06-26 23:12
哲库科技_前端设计工程师
Clifford论文系列多异步时钟设计的综合及脚本技术(1)
最近写资料的空闲时间,想着看看clifford E. Cummings的经典论文,虽然年代较远,但是每一篇都值得好好研究。本系列不定期更新,计划看完以下论文。 本文英文链接http://www.deepchip.com/downloads/cliffsnug01.pdf 本文较长,分两次推送。 在一般情况下,单时钟的设计是很少的,主要还是多时钟设计。但是多时钟设计就会涉及到很多的问题,主要如下: 1.亚稳态 如上所示,当出现两个时钟模块时,则很容易使得数据不满足建立/保持时间,因此会出现亚稳态。 2.同步器 同步...
0
点赞
评论
收藏
分享
2022-06-23 10:24
哲库科技_前端设计工程师
SystemVerilog中scheduler(调度)
虽然设计的代码在仿真器中理论上来说是可以并行执行的,但是在实际仿真中,代码都是运行在CPU上的一些程序而已。SV为代码的执行顺序定义了调度机制,最大限度的减少不确定性的产生。 SV被定义为一种基于离散事件执行模型的语言。换句话说,仿真是离散的,是基于时间片进行且只对特定的时刻点进行仿真的。 这里说的时间片其实没有时间概念,纯粹是工具为了仿真效果而提出的不同任务工作的区域,在一个时钟边沿有效,可以理解为一个时钟边沿上的进程,但不涉及时间的推进,只是进程顺序执行。只有在当前时间片上的所有仿真全部完成,仿真器才会进入下一个时间片。当然,每个时间片还会细分为多个区域,如下图所示: 抛开...
0
点赞
评论
收藏
分享
2022-06-23 09:28
已编辑
哲库科技_前端设计工程师
SystemVerilog中Assertions
本文部分内容是来自SV LRM书的翻译。 断言是设计的属性的描述。 ● 如果一个在模拟中被检查的属性(property)不像我们期望的那样表现,那么这个断言失败。 ● 如果一个被禁止在设计中出现的属性在模拟过程中发生,那么这个断言失败。 SVA 是一种描述性语言,可以完美地描述时序相关的状况。语言的描述性本质提供了对时间卓越的控制。语言本身非常精确且易于维护。SVA 也提供了若干个内嵌函数来测试特定的设计情况,并且提供了一些构造来自动收集功能覆盖数据。 关于系统的论述,我后面应该会写文章更新,今天主要讲讲几个比较容易疑惑的...
0
点赞
评论
收藏
分享
2022-06-23 00:13
已编辑
哲库科技_前端设计工程师
异步FIFO设计
概述 前面提及到同步FIFO的设计,同步FIFO。但是在大规模的数字电路设计中,多时钟域往往是不可避免的,这样就会产生了跨时钟域传输等问题,为了解决跨时钟域问题,我们常常采取的方法是握手协议和异步FIFO做数据缓冲区,异步FIFO既可以使相异时钟域数据传输的时序要求变得宽松,也提高了它们之间的传输效率。 设计思路 如上图中所示,左边是写时钟域中的信号,右边则是读时钟域中的信号,中间存在两个同步时钟逻辑单元,它们的目的是分别为了使得写时钟域中的写时钟同步到读时钟域,从而产生或者消除读空信号,读时钟域中的读时钟同步到写时...
0
点赞
评论
收藏
分享
2022-06-22 23:18
已编辑
哲库科技_前端设计工程师
SystemVerilog中从event看fork join
前面我写过一篇关于event的文章。SystemVerilog中event,今天再来说点新花样。本次仿真使用的仿真器是VCS2019.06 前面讲到,关于event一般来说有两种触发方式--wait以及@。其中@需要捕捉到事件event产生的瞬间,稍纵即逝,而wait(event.triggered)则不需要管时间。但是在有的情况下,我们是只能够用@的,比如需要捕捉到事件的多次发生,此种情况下如果使用wait(event.triggered)是不行的,因为它只需要捕捉到一次就会一直为高,因此需要使用@。 今天的重点是来探究下fork...join到底是怎么执行的...
0
点赞
评论
收藏
分享
2022-06-21 12:19
哲库科技_前端设计工程师
SystemVerilog中Package
Package是systemverilog中的语言结构,它使相关的声明和定义能够组合在一起。Package可能包含类型定义,常量声明,函数和类模板。为了能在一个范围内使用Package,必须先导入它,然后才能引用其内容。 我们一般把不同模块的类定义在不同的Package中,这样可使得分属于不同的模块验证的类来自不同的Package中。 需要注意的是,不同的package可以包含同名不同内容的文件,甚至可以包含同一个文件而不引起多重定义问题。原因在于package是将命名空间分开的,因此如果出现相同文件,我们只需要注意是使用哪个package中的就好。 以...
0
点赞
评论
收藏
分享
2022-06-21 09:21
已编辑
哲库科技_前端设计工程师
SystemVerilog与Verilog中多重定义
在Verilog和SystemVerilog中,仿真器常常报出多重定义的错误。 最常见的情况就是在写的Testbench中,一般来说,我们首先会创建一个数据包packet类,然后分别在generator、driver、scoreboard等类中调用它,也就是说多个文件包含同一个文件,这时候如何不添加其他语句,仿真器预处理时就会出现多重定义的错误。 `ifndef 在文件中的作用 在头文件中使用#ifndef #define #endif的语句能避免头文件的重定义。 方法:例如要编写packet.sv时,在文件开头写上两行: `ifndef router_...
0
点赞
评论
收藏
分享
2022-06-20 12:42
哲库科技_前端设计工程师
SystemVerilog中functioncoverage
本文中所有出现的仿真截图均是在VCS2019.06下进行。 什么是功能覆盖率 功能覆盖率是用户定义的度量标准,用于度量验证中已执行的设计规范的比例。 功能覆盖主要有两种: 1、面向数据的覆盖率:主要是检查数据值的组合逻辑是否会发生,我们通过编写coverage group, coverage points和across coverage, 我们获得面向数据的功能覆盖率大小。 2、面向控制导向的覆盖率:主要是检查行为序列是否已发生。我们可以通过编写SystemVerilog断言来获得断言覆盖率 功能覆盖率模型 覆盖模型是使用Covergroup...
0
点赞
评论
收藏
分享
2022-06-20 10:13
已编辑
哲库科技_前端设计工程师
SystemVerilog中的callback(回调)
在第二次systemverilog实验中,我看到有同学用到了callback函数,今天就是简单讲讲这个方法。 1、什么是callback callback是SystemVerilog学习者的主要困惑点之一。许多人在许多论坛上都提出了相同的问题,但答案似乎并不能尽如人意。 我们可以将数据成员传递给任何函数。现在考虑一种情况,将一个函数(例如func1)作为数据成员传递给另一个函数(例如func2),并且得到所谓的callback。之所以称为callback,是因为函数func2现在可以在其代码函数func1中的任何地方调用。 如下图所示: ...
0
点赞
评论
收藏
分享
2022-06-19 23:57
哲库科技_前端设计工程师
SystemVerilog中$cast方法
$cast是systemverilog中的内建方法。 $cast可以对不同的内建类型进行转换,用的更多的是不同层次之间类的转换。在这种父类与子类之间的转换里, 父类站的高,子类在底下,从父类向子类的转换,称为向下类型转换,而子类向父类的转换称为向上类型转换。向上类型转换是安全的,而反之则是不安全的。原因在于子类既然继承了父类,就拥有父类的一切属性,除此之外,龙生九子,各有不同,子类还有自己独特的个性,这些是父类没有的。当进行向上类型转换时,相当于父类的句柄指向子类对象,这样的话句柄仍然能对子类对象与父类相同的属性进行访问。但是反过来,如果向下类型转换也那么自由,当试图把子类的句柄指向父类...
0
点赞
评论
收藏
分享
2022-06-19 22:33
哲库科技_前端设计工程师
SystemVerilog中多态与虚方法
在验证过程中,往测试平台中添加新的测试激励很正常的事,这样的话就需要对原来的测试平台进行改进,有的时候需要修改原来的代码甚至可能修改一些数据结构,这个过程中可能会导致在原来的验证平台中引入意外的错误。那么为了保证原有平台或数据结构不变,通过对已经有的基类进行引申或者扩展,从而完善整个验证平台。 从基类做扩展并产生新的子类的过程叫类的派生,当一个类被扩展并创建之后,该派生类就继承了其基类的数据成员、属性和方法,这就是类的继承。 继承后的类可以实现以下功能: 1.继承了原来类中的方法,并可以修改 2.添加新的方法 3.添加新的数据成员 ...
0
点赞
评论
收藏
分享
2022-06-19 22:34
已编辑
哲库科技_前端设计工程师
UVM学习--基本概念篇1
1、什么是UVM?UVM具有什么优势? UVM 是 Universal Verification Methodology 的缩写,即通用验证方法学。它起源于 OVM(Open Verification Methdology),是由 Cadence, Mentor 和 Synopsys 联合推出的新一代的验证方法学。主要优势: 三个EDA软件提供商共同支持。 通用的验证平台开发,贯穿于验证平台的可重用性。 第一种自动化方法和第二种自动化类库的集合。 不局限于特定的仿真器 提供一些可重用的类减轻复用工作量 ...
0
点赞
评论
收藏
分享
2022-06-18 10:08
已编辑
哲库科技_前端设计工程师
systemverilog中automatic与static
前段时间写过一篇关于automatic的文章,最近又看到总结一下: 本次仿真器是questa sim 10.6c。 上次的传送门在这。 systemverilog之Automatic 如果变量被声明为automatic,那么进入该方法后,就会自动创建,离开该方法后,就会被销毁;而static则是在仿真开始时就会被创建,直到仿真结束,可以被多个方法/进程共享。 通过几个栗子看其区别: ex1: function automatic int auto_cnt(input a); int cnt = 0; cnt += a; ret...
0
点赞
评论
收藏
分享
1
2
3
4
5
6
7
关注他的用户也关注了:
牛客网
牛客企业服务