
SystemVerilog
seabeam
这个作者很懒,什么都没留下…
展开
-
关于SystemVerilog中的随机化问题
只是一些很初级的经验。在SV中写随机测试环境的时候,往往有随机路径的需求,就会用到randcase等语句。刚使用的时候会发现,假如randcase只使用了一次,那么每次编译完成以后,怎么都是同一条路径呢?不应该是每次都随机的吗?其实随机数这个概念,对于大多数环境,MATLAB也好,VS也好,SV里的PRNG也一样,产生的都是伪随机数。在这里这个P已经暴露了。什么叫伪随机数呢?就是说这个随机原创 2012-05-07 22:25:18 · 12751 阅读 · 1 评论 -
event触发的竞争条件(Event trigger race conditions)
event触发的竞争条件问题:在进程等待event触发的同一时间步长内,若该event触发,则不一定能等到该eventverilog通过event数据类型提供一种基本的进程同步机制,使用这种机制会遇到两个问题。第一个问题也许一开始不会被当做问题,但是过了几年你会意识到这真是个问题:许多工程师甚至不知道sv中还有event,根本没想到去用它。有个工程师使用了N年的verilo翻译 2014-11-13 14:07:45 · 2748 阅读 · 0 评论 -
怎样在systemverilog DPI中调用SV,C与C++(一)
网上有些例子只给了简单的print,不能充分说明问题。既然希望在C里调用C++的函数原创 2014-06-06 11:59:00 · 12961 阅读 · 0 评论 -
怎样在systemverilog DPI中调用SV,C与C++(二)
有的时候需要交互struct,union数据类型,下面举个简单例子。在SV里定义这个一个结构体:typedef struct { int id; string name;} xaction; 同样的,在C里定义同样的结构体,结构体名可以不一致:typedef struct { int id; char* name;原创 2015-01-14 15:48:14 · 6427 阅读 · 1 评论 -
功能覆盖率漫谈
vcs支持层次交叉覆盖率,意味着:covergroup cg_a { coverpoint a;}covergroup cg_b { coverpoint b;}covergroup x_ab { cross cg_a.a, cg_b.b;}是可以跑起来的,书写上的便利可以让组合更自由。这种写法有几个地方要注意:1.需要在vcs elaborate时加上-lc原创 2015-06-05 00:45:08 · 14327 阅读 · 2 评论 -
SystemVerilog中的$cast()向下类型转换
在UVM中经常可以看到$cast的身影,这是SV的build-in task之一,当然它还有function的版本,这里不讨论。说到这,不得不提到“类型转换”这个术语,SV和很多其他语言一样,都支持特定类型间的相互转换。SV类型转换分两种方法,一种叫静态类型转换,另一种称之为动态类型转换。静态类型转换的语法类似为:int a = 2;real b;b = real'(a); 这种原创 2015-08-21 21:57:42 · 23059 阅读 · 10 评论 -
VPI step by step(1)
本文主要参考”The Verilog PLI Handbook(Second Edition)”, 权当读书笔记。主要针对VCS flow, 也许会穿插其他两大家工具的flow.说在最前面到今天为止,SV对C/Cpp的主要接口支持大多改用DPI, 也推荐使用DPI。或者直接使用UVM自带现成的DPI lib, 已经可以满足不少需求。然后类似C与汇编的关系,VPI更接近与底层Verilog与C的交互,原创 2017-08-27 15:00:13 · 5293 阅读 · 1 评论