赞
踩
目录
Q60.当task的通过ref传递数据时,如果task内部对数据进行了修改,task外部是否立即可以看到数据被修改了还是要等到task执行完才能看到
Q62.随机化的优势是什么?是不是意味着不再需要定向case了
Q63.randomize with{....}中的约束与class中的约束是什么关系
1.变量对象没有声明rand或randc;
2.constraint 有冲突,无法随机出值;
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
竞争: 信号由于不同路径传输到达某一汇合点的时间有先有后的现象。(当一个门的输入有两个或两个以上的变量发生改变时,由于这些变量是经过不同路径产生的,使得他们的状态改变的时刻有先有后,这种时差引起的现象称为竞争。)
冒险: 由于竞争现象所引起的电路输出发生瞬间错误(产生干扰脉冲)的现象。
interface是连接硬件的,其是硬件语言;但对于验证来说,其描述语言往往是软件语言,interface无法在基于OOP的测试平台中实例化,因此我们无法通过interface把激励传送到DUT中;为了解决这个问题,引入了virtual interface,使得基于OOP的验证环境可以通过虚接口把激励传送给DUT。
将有关信号封装在同一个接口中, 对于设计和验证环境都便于维护和使用。 如果你需要新添加信号, 只需要在接口中定义这个信号, 而在使用这个接口的模块或者验证环境中做出相应修改。
由于接口既可以在硬件世界(module)中使用,又可以在软件世界(class)中使用,interface作为SV中唯—的硬件和软件环境的媒介交互,它的地位不可取代。
接口由于可以例化的特性, 使得对于多组相同的总线, 在例化和使用时变得更加灵活,不仅使得代码变得简洁, 也更易于验证环境的管理和维护。
在SV中,子类的句柄可以直接赋值于父类的句柄,父类的句柄指向子类的对象,这是允许的。但是如果反过来,将子类的句柄指向父类的对象,是非法的,编译器在编译过程中会报错,如果使用$cast进行转换,$cast(子类句柄,父类句柄)编译器在编译过程中会编译通过,实现父类句柄赋值于子类句柄的强制转换。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。
先做zero_delay仿真,确保加载的网标文件是正确的,然后,再将SDF文件反标到网标文件上。
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。其输入文件为从布局布线结果抽象出来的门级网表、testbench和扩展为sdo或sdf的标准时延文件。sdo、sdf的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。一般来说后仿真是必选的,检查设计时序与实际的FPGA运行情况是否一致,确保设计的可靠性和稳定性。
向子程序传递数组时应尽量使用ref获取最佳性能,如果不希望子程序改变数组的值,可以使用const ref类型
在任务里可以修改变量而且修改结果对调用它的函数随时可见。
31:24 23:16 15:4 3:0
p1 p2 p3 p4
stract packed{ int [31:24] p1; int [23:16] p2; int [15:4] p3; int [3:0] p4; }p_pkt;
随机测试相比于定向测试可以减少相当多的代码量,而产生的激励较定向测试也更加多样化;
但是有一些随机覆盖不到的点在验证后期还需要验证人员便编写定向case去完成。
SV 中允许使用randomize with{...}的内嵌约束方法在来增加额外的约束,这和在类中声明的约束是等效的,但是此时要注意内部约束和外部约束之间应该是协调的,如果出现相互违背的情况,那么随机值求解就会失败,一般在有外部约束的情况下,习惯性的将内部约束声明为软约束类型。
通过对随机测试的分析,找出随机测试没有覆盖到的地方,有针对性的编写定向测试case,进行验证。
数字电路是由模拟电路转换过来的,在模拟电路中通常会使用到的高低电平在数字电路中表现为1和0,在逻辑电路的使用中,只有断开和闭合两种状态,所以使用二进制即可。(个人理解)
常见的风险就是竞争冒险,当一个信号在经过不同的路径时,到达输出端的时间不一致,会产生延迟,从而引起竞争,使得电路出现瞬时的错误。另外,由于时钟信号的skew hold要求,可能在异步电路中出现亚稳态的情况,由于亚稳态具有传递性,所以会影响电路的稳定性,造成错误。
将父类的方法前面加virtual修饰,定义为虚方法,在子类中定义与父类相同变量和方法名的方法时,当父类的句柄指向子类的对象时,仿真器会动态的查找子类中与父类具有相同名称的方法。
简而言之,虚方法允许不同类型的句柄去访问属于该类的方法,比如父类例化的句柄,当把它的类型指定为子类类型,那么它就可以访问子类的方法。也就说以类型去调用方法,这就是虚方法。
正在了解,过后更新
wait update
1、搞清楚要验证的东西
对设计spec进行阅读和理解,把DUT的结构、功能,时序弄清楚。
2、编写验证计划,指导性的文件
(1)提取验证功能点
(2)明确DUT接口信号(所有信号的名字,位宽,功能,时序关系等)
(3)TB的架构(能够描述每一个组件的功能)
(4)检查点(check point)
(5)功能覆盖率(覆盖点)
(6)测试用例的规划(testcase尽可能的规划完整)
(7)结束标准
3、搭建TB&Debug&调通第一个最基本的testcase,然后再编写测试用例debug,进行主要验证。
4、Regression(回归测试,一天一次,有随机测试)
5、分析代码/功能覆盖率,增加新的测试用例
6、测试报告,测试结果:测试用例(pass/fail),覆盖率报告
virtual interface
即interface是连接硬件的,其是硬件语言;但对于验证来说,其描述语言往往是软件语言,interface无法在基于OOP的测试平台中实例化,因此我们无法通过interface把激励传送到DUT中;为了解决这个问题,引入了virtual interface,使得基于OOP的验证环境可以通过虚接口把激励传送给DUT。
1.$random()----平均分布,返回32位有符号随机值;
2.$urandom()----平均分布,返回32位无符号随机值;
3.$urandom_range()----在指定范围内的随机分布;
4.$dist_exponential()----指数衰落;
5.$dist_normal()----钟型分布;
6.$dist_poisson()----钟型分布;
7.$dist_uniform()----平均分布;
package类似于库,可以对类名做一个隔离,将一簇相关的类组织在单一的命名空间里,使得分属于不同模块验证环境的类来自于不同的package,可以用package来解决类的归属问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。