一.三个概念
关键点:对粘连的理解和验证
1、寄存器默认值的验证
DUT初始化后,读取寄存器值,判断读取的值是否等于设计时所配置的初始值,不等则证明寄存器有错。
2、寄存器之间是否有粘连的验证
通常,对一个寄存器进行赋值,不会影响到其他寄存器值,但是当发生寄存器之间的粘连时,寄存器之间就不再有独立性,对其中某个寄存器进行赋值操作,就会影响到其他寄存器的值。
通常是写入0x01(<<1)后读出0x10,以此类推。
3、同一寄存器中比特位之间的粘连
通常,对一个寄存器中某一位进行置位或清零操作,不会影响到其他比特位,但是当发生寄存器内部比特位之间的粘连时,比特位之间的独立性就不存在了,对其中某个位进行置位或清零操作,就会影响到其他比特位的值 。
二.寄存器验证方法
以RW寄存器为例
方法一
1.读测试(默认值测试)
读出的值应该为默认值,否则为默认值设置错误,默认值错误有时会引起一些莫名其妙的错误
2.读写测试
(1). 随机值测试,随机一个寄存器值然后读出进行比对;
(2). 位粘连测试,采用00….001和11..110进行移位操作写入读出对比测试防止寄存器某些bit位粘连;
(3). 位翻转测试,写0x55..555(0101...0101) 、0xaa..aaa(1010...1010),读出比较;
(4). 位边界测试,写00…00,fff…ff(1111...1111)读出比较
方法二 五步法(其实两种方法是一样的)
1.测寄存器的value
一.对所有寄存器复位,检测default_value是否正确
二.对所有寄存器写入ff(1111_1111),检测是否正确
三.对所有寄存器写入aa(1010_1010)
四.对所有寄存器写入55(0101_0101)
五.对所有寄存器写入随机值
2.进行粘连测试
通常是写入0x01读出0x10,以此类推,写入一个寄存器后读出其他所有寄存器检查是否误写入。