摘要:对verilog的初学者来说,线网和变量reg之间的不同点,也许是最难的。你有时得用reg而有时却得使用wire,使用来使用去,简直头晕。而在SystemVerilog中,我们将会看到你可以在过去verilog中用reg型或是wire型的地方用logic型来代替。实际上logic是对reg数据类型的改进,使得它除了作为一个变量之外,还可以被连续赋值、门单元和模块所驱动,显然,logic是一个更合适的名字。举个RAM modelling的例子来说明上述问题,我们分别用Verilog和SystemVerilog来实现。//RAM modelling in Verilog1 module mema
阅读全文
摘要:根据海思验证大牛一文《总结我的思路,如何在验证中发现和定位Bug》整理而得。很多新晋的验证人员抱怨,这么多信号,这么复杂的连接关系,千头万绪,眼睛都看得长挑针,还是看不出东西。OK,我说,这是没办法的事情,看波形,追波形,是一个经验积累的过程,任谁都逃不掉。越是看,越是明白,越是不看,越是不懂。看得多了,自然就知道应该抓那些信号,如何分类,如何追溯了。所以我奉劝某些希望通过全自动的Log和信息推导结果,或者每次一有问题就找设计人员看波形的验证人员,回头是岸。波形,是逻辑运行的最真实的表现,逃不掉的。看波形首先有两个基本的看点。先看X和Z。任何一个波形,无论是验证的前期、中期、后期,到手之后,先
阅读全文
摘要:完整的、详细的设计规范是验证工作的重要起点。验证工作根据设计规范(specification)进行,详细的spec是RTL代码编写工作的依据,也是验证工作的依据。当验证过程发现DUT的响应与testbench预计的不符时,需要根据spec判断是DUT出现错误还是testbench出现错误。参数化的全局定义全局定义会给书写和仿真带来很大方便,在编写testbench过程中,如果激励中有一些重复的事件,可以考虑将这些语句编写成一个task。比如:1.Register相关位及其数值可以全局宏定义在reg_define.v中。2.相关路径可以全局宏定义在define_board.v中。3.系统重要变量
阅读全文