2012年5月25日

SYNOPSYS VCS常用命令使用详解

摘要: VCS对verilog模型进行仿真包括两个步骤: 1. 编译verilog文件成为一个可执行的二进制文件命令为:vcs source_files 2. 运行该可执行文件:./simv 类似于NC, 也有单命令行的方式:vcs source_files -R -R 命令表示, 编译后立即执行。vcs常用的命令选项如下: -cm line|cond|fsm|tgl|obc|path 设定coverage的方式 +define+macro=value+ 预编译宏定义 -f filename RTL文件列表 +incdir+directory+ ... 阅读全文

posted @ 2012-05-25 10:51 jyaray 阅读(8102) 评论(2) 推荐(3) 编辑

2012年2月6日

如何在SystemVerilog中手动设置随机化seed

摘要: 可以产生受约束的随机激励是sv验证语言中最主要的feature,这里有一个常常会被验证工程师忽视的问题,就是随机化种子(seed)。我们知道,用verilog里面的$random或者sv里面的$urandom产生的都只是伪随机数,也就是说,如果不改变seed,每次仿真产生的随机数都一样。sv的受约束的随机化方法与上述情况其实也有点相同。sv中,每个对象维持自身的内部RNG,排他地用于randomize()方法,这使得对象的随机化保持各自独立。当生成对象时,创建它的线程的RNG的下一个值被用于设置成它的RNG的随机化种子。此时对象的new函数()默认的seed为1,如果不改变seed的值,则每次 阅读全文

posted @ 2012-02-06 21:36 jyaray 阅读(18828) 评论(1) 推荐(4) 编辑

2012年2月3日

I2C总线协议之可以用于验证的verilog model

摘要: 本文先简单介绍一下I2C总线协议,然后给出一个可以用于Verification的verilog model。1.I2C协议2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0。 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。1.1 I2C位传输 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit。若SDA发生跳变,则用来 阅读全文

posted @ 2012-02-03 17:54 jyaray 阅读(10928) 评论(1) 推荐(4) 编辑

2012年1月10日

网上订火车票,用chrome和firefox才是王道

摘要: 网上订票,宣告拼体力时代的终结,取而代之,拼脑力的时代到来了。下面介绍一下最近看的订票选用浏览器的技巧,一言以蔽之,用chrome和firefox才是王道。方法.1 用chrome订票先介绍用chrome订票所需的装备:1. chrome浏览器2. 12306 Auto Login1.0自动登录脚本。在chrome中,打开https://gist.github.com/raw/1570973/0064a3a6ed37ef70e817d4f5d69bef0ac76b5345/12306AutoLogin.user.js 地址,进行插件安装。3.Chrome自带的javascript调试工具装备. 阅读全文

posted @ 2012-01-10 17:32 jyaray 阅读(14400) 评论(13) 推荐(1) 编辑

2011年11月28日

Verilog-2001的向量部分选择

摘要: rt,什么是向量部分选择呢?verilog-2001 LRM中有这么一句话:对于a[8*i+:8],this is the so-called "Indexed vector part selects" 。在Verilog-1995中,可以选择向量的任一位输出,也可以选择向量的连续几位输出,不过此时连续几位的始末数值的index需要是常量。vect[msb_expr : lsb_expr]; //其中msb_expr和lsb_expr必须是常量表达式。而在Verilog-2001中,可以用变量作为index,进行part select。[base_expr +: width 阅读全文

posted @ 2011-11-28 13:31 jyaray 阅读(2841) 评论(0) 推荐(1) 编辑

2011年5月19日

从logic数据类型的用法看SystemVerilog的优点

摘要: 对verilog的初学者来说,线网和变量reg之间的不同点,也许是最难的。你有时得用reg而有时却得使用wire,使用来使用去,简直头晕。而在SystemVerilog中,我们将会看到你可以在过去verilog中用reg型或是wire型的地方用logic型来代替。实际上logic是对reg数据类型的改进,使得它除了作为一个变量之外,还可以被连续赋值、门单元和模块所驱动,显然,logic是一个更合适的名字。举个RAM modelling的例子来说明上述问题,我们分别用Verilog和SystemVerilog来实现。//RAM modelling in Verilog1 module mema 阅读全文

posted @ 2011-05-19 18:42 jyaray 阅读(10450) 评论(2) 推荐(3) 编辑

2011年5月13日

IC验证之怎样通过波形来发现和定位Bug

摘要: 根据海思验证大牛一文《总结我的思路,如何在验证中发现和定位Bug》整理而得。很多新晋的验证人员抱怨,这么多信号,这么复杂的连接关系,千头万绪,眼睛都看得长挑针,还是看不出东西。OK,我说,这是没办法的事情,看波形,追波形,是一个经验积累的过程,任谁都逃不掉。越是看,越是明白,越是不看,越是不懂。看得多了,自然就知道应该抓那些信号,如何分类,如何追溯了。所以我奉劝某些希望通过全自动的Log和信息推导结果,或者每次一有问题就找设计人员看波形的验证人员,回头是岸。波形,是逻辑运行的最真实的表现,逃不掉的。看波形首先有两个基本的看点。先看X和Z。任何一个波形,无论是验证的前期、中期、后期,到手之后,先 阅读全文

posted @ 2011-05-13 16:43 jyaray 阅读(5296) 评论(2) 推荐(5) 编辑

2011年5月11日

处女项目后关于IC验证经验的总结

摘要: 完整的、详细的设计规范是验证工作的重要起点。验证工作根据设计规范(specification)进行,详细的spec是RTL代码编写工作的依据,也是验证工作的依据。当验证过程发现DUT的响应与testbench预计的不符时,需要根据spec判断是DUT出现错误还是testbench出现错误。参数化的全局定义全局定义会给书写和仿真带来很大方便,在编写testbench过程中,如果激励中有一些重复的事件,可以考虑将这些语句编写成一个task。比如:1.Register相关位及其数值可以全局宏定义在reg_define.v中。2.相关路径可以全局宏定义在define_board.v中。3.系统重要变量 阅读全文

posted @ 2011-05-11 12:30 jyaray 阅读(13844) 评论(5) 推荐(11) 编辑

2011年4月30日

tar压缩解压缩命令详解

摘要: tar命令详解-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出参数-f是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。# 阅读全文

posted @ 2011-04-30 12:41 jyaray 阅读(628258) 评论(4) 推荐(28) 编辑

2011年4月26日

后仿真能否被形式验证(Formal Verification)和静态时序分析(Static Timing Analysis)所取代

摘要: 验证的主要目的:就是检查时间模型是否满足时间要求,是否实现了时间所需的功能。对于集成电路来说,具体就是在时间需求规定的激励下,电路是否产生了符合功能要求的输出;以及在设计需求规定的条件下,电路是否完成正常的功能。 以RTL级设计为仿真对象的前仿真,主要是验证电路的逻辑功能,信号的跳变是瞬时完成的,因此只能在功能上证明设计的正确性,而无法证明在实际电路中逻辑功能仍然正确。 门级仿真是对RTL代码综合并布局布线后生成的门级网表进行时序仿真,是引入了逻辑延时时间的仿真。在后仿真阶段,仿真的过程中引入了线上和门级的延时,重点是验证在引入了实际时延之后系统功能是否正确,以避免因时延问题而导致系统时序功. 阅读全文

posted @ 2011-04-26 22:50 jyaray 阅读(5638) 评论(1) 推荐(2) 编辑

导航