论文部分内容阅读
本文主要结合作者在中晟宏芯公司实习的项目,设计了一款用于Power Core的FSI-IIC模块,并搭建了相应的UVM验证平台,通过FSI通信协议对待测设计添加激励,最终完成仿真验证。近年来,IIC总线被广泛的应用到片上系统(SOC,System On Chip),它是一种通用的串行双向通信协议,具有线路少,控制简单的特点,IIC的传输速率一般在100kbit/s。对于FSI-IIC模块的验证采用UVM验证方法学,UVM已经成为验证界的主流思想,它有着强大的、已经证实的工业基础,是未来验证技术的发展趋势。在设计方面,本文完成了FSI-IIC转换桥模块的设计实现。FSI-IIC模块包含FSI协议解析模块、IIC-master和IIC-slave三个部分。FSI协议解析模块包括命令控制器、读写控制器、CRC校验模块和串并转换器。其主要工作是提取FSI总线上的命令、数据信息并和IIC-master进行通信。IIC-master的设计分为时钟产生器、字节命令控制器、位命令控制器和内部寄存器四个部分。IIC-master的时钟产生器负责产生IIC的时钟。字节命令控制器根据命令寄存器中的值产生开始、停止等命令,然后交给位命令控制器产生相应的命令信号。EEPROM Controller作为IIC总线上的从机,内部的ST/SP检测器用于监测IIC总线的开始、停止信号。器件地址检测器用于判断器件寻址是否正确。字节地址控制器将决定每次读写存储器的地址。移位寄存器是将IIC总线上的串行数据转换成并行数据发送给存储器或者将存储器内的并行数据转换成串行数据发送到IIC总线上。在验证方面,针对本文的设计FSI-IIC模块提取了待测功能点。利用UVM验证方法学的思想搭建了一个可用于FSI-IIC模块验证的结构化平台,并根据提取的功能点在fsi_req_tr组件中产生随机激励发送给fsi_master_driver组件,使用虚拟接口fsi_if完成对DUT激励的添加。master_monitor采样接口fsi_if发送给DUT的数据并转换成数据包发送给参考模型。计分板调用比较器完成参考模型和DUT结果的比对。本文的激励采用受约束的随机生成方法和覆盖率驱动生成方法。针对不同的功能点场景的需求,在sequence中对数据包中的数据进行相应的约束和配置。对于约束随机激励没有覆盖到的地方,采用覆盖率驱动生成方法产生定向激励进行覆盖,最终使得功能覆盖率达到100%,代码覆盖率达到96%以上。