热度 8| |
声明,不得转载。
在soc芯片验证中,往往新的项目会迭代于之前的项目,但是会有稍许的变化。在项目的开始,首先会review testplan。testplan中包含基本原理,数据通路方向,以及要测feature,有哪些case,每个case的激励以及要check的点是什么。其中就有一些从之前项目拿过来的一些case,称之为legacy case。这些legacy case会首先调试。
本文介绍简单legacy case中遇到的bug。
1、在这个legacy case中会遇到类似读写寄存器语句。
例如: rdata=API.read(mmregister) 。
在这个语句中,可能会出现mmregister was not declared in this scope等现象。这类问题该如何解决。
这句代码的意思是对一个寄存器进行读,该寄存器的地址是mmregister,这个是一个define,它实际上就是一个数字。这些寄存器define语句一般会放在同一个文件里define.h,这个文件会被legacy case的 cpp文件include进去。我们可以去查看这个文件里这个变量会不会定义,这个时候发现,这个变量没有被定义。然后我们进一步去UVM的寄存器模型ral路径下面去grep相应的寄存器register(一般情况下,寄存器地址define和寄存器名字会有关键词一样的特性),会发现没有这个寄存器,找不到这个寄存器。
case cpp 在进行寄存器读写的时候,上下文一般会写上打印读写某个ip的寄存器信息。就可以发送邮件询问具体某个ip的负责人,询问该寄存器的信息。他们会确认给出这个寄存器的处理办法。
2、在验证环境中,我们一般会对每一个case的结果进行检测对比,也就是scoreboard功能,或者在验证环境中,会有很多assertion 语句,这些assertion语句可能是对协议接口类似axi的时序检测。比如对rdata的读出来的数据不能有x。这些axi协议接口是和dut连接在一起的,如果满足了读条件,而读出来的数据是x。就会出现问题。具体如何检测x, 多逛逛本网站,你会找到答案的。面试的时候,可能会被问到。
假设遇到了assertion的error如下:
When RVALID is high, a value of X on RDATA valid byte lanes is not permitted。
要解决这类问题。我们需要看看这个提示上下文中的assertion语法,看看这些assertion语法哪里出现问题了。然后去找到对应的和axi协议接口连接在一起的的dut信号,拉出来波形,定位报错的这个时刻。一般rdata是x。在波形中需要去trace 这个信号的driver,这类问题一般是某个信号没有driver了,处于floating状态,也就是双击信号,verdi工具等等无法跳转到它的driver。
第一个问题,如何在波形中trace信号,多逛逛本网站,能找到你需要的答案。
第二个问题,你可以通过双击查看其driver,也可以通过verdi中的New Schematic也能看到这个信号属于floating状态,New Schematic还是很好地,可以很直观的看到芯片信号的连接情况。
微信号:chipist1 ,添加微信交流技术以及找工作
内推大公司:海光, AMD, 兆芯,苏州瑞晟微电子,苏州盛科网络,TI,杭州矽力杰等等。
招聘:上海,深圳,珠海,广州,成都,杭州,苏州,北京,西安,数字ic设计工程师,数字验证工程师,模拟ic设计工程师,DFT,FPGA,数字后端工程师,RFIC,射频工程师,ae,fae,sales。总有一款适合你,欢迎ICer自荐和推荐。
1、模拟IC设计工程师25-80W(电源方向:初级、高工、经理、总监)均有需求,坐标:深圳/上海/武汉/长沙/南京/苏州/昆山/杭州/成都/西安/北京/厦门。
2、资深模拟IC设计(混合信号),30-100W, 坐标:上海/南京/深圳/昆山/成都/重庆/西安/武汉/珠海/广州/昆山。
3、资深数字IC设计工程师-------苏州、上海、北京、杭州、武汉、成都、西安、四川、广州、深圳、珠海、昆山;
4、数字IC设计前端/后端 工程师-四川/武汉、上海、北京、广州、昆山;
5、FPGA-西安/上海;
6、RFIC资深/专家/VP,射频工程师 -杭州/上海、重庆、成都、深圳、西安、北京、。
7、FAE/AE-武汉/上海/深圳/昆山/厦门;
8、模拟版图设计工程师-武汉/上海/深圳/成都/厦门。
备注:初创型、成熟型、国企、外资企业、甚至合伙人岗位应有尽有。
另外,上海/苏州/成都/昆山分别有数字经理、模拟(ADC/DAC)(DC/DC)(AC/DC)经理
欢迎自荐和推荐(同学/朋友/同事)。谢谢啦!