全可编程SOC芯片的MIO功能快速验证方法转让专利
申请号 : CN202110195437.5
文献号 : CN113010361B
文献日 : 2022-03-18
发明人 : 郭佳形 , 丛红艳 , 闫华 , 单悦尔 , 赵赛
申请人 : 无锡中微亿芯有限公司 , 中国电子科技集团公司第五十八研究所
摘要 :
权利要求 :
1.一种全可编程SOC芯片的MIO功能快速验证方法,其特征在于,所述方法包括:初始化验证环境平台,所述验证环境平台包括测试用例层及其包含的验证环境层,所述验证环境层集成AXI系统环境;
将待验证的全可编程SOC芯片的MIO参数数据输入所述验证环境平台的测试用例层,所述测试用例层调用测试代码根据所述MIO参数数据在验证环境中构建得到验证用例,所述MIO参数数据至少包括所述全可编程SOC芯片中的MIO端口的数量以及每个MIO端口的所有功能模式,MIO端口的功能模式包括所述MIO端口作为输入端口时的所有MOS管传输类型、所有上拉状态电压值和所有三态电压值,以及,所述MIO端口作为输出端口时的所有MOS管传输类型、所有上拉状态电压值和所有三态电压值;
所述验证用例利用所述AXI系统环境中的master_base_sequence根据第i个目标地址以及第j个目标数据对所述全可编程SOC芯片中的寄存器进行配置、将所述第i个目标地址的寄存器配置为所述第j个目标数据,使得所述全可编程SOC芯片中由第i个目标地址的寄存器控制的第i个MIO端口工作在所述第j个目标数据对应的第j个功能模式下,i和j均为参数且起始值均为1;所述测试用例调用uvm_hdl_*类函数利用测试数据对所述第i个MIO端口的第j个功能模式进行测试得到验证结果;
若j<N则令j=j+1,若j=N且i<M则令i=i+1并令j=1,再次执行所述利用所述AXI系统环境中的master_base_sequence根据第i个目标地址以及第j个目标数据对所述全可编程SOC芯片中的寄存器进行配置的步骤;
若j=N且i=M,则完成对所述全可编程SOC芯片的MIO功能验证,N为所述第i个MIO端口的功能模式的总数量,M为所述全可编程SOC芯片中的MIO端口的数量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:使用带参数的宏定义将所述AXI系统环境中的master_base_sequence对寄存器的配置操作编写为宏函数,所述宏函数的参数包括寄存器地址和配置值;
则所述利用所述AXI系统环境中的master_base_sequence根据第i个目标地址以及第j个目标数据对所述全可编程SOC芯片中的寄存器进行配置,包括:将所述第i个目标地址作为所述宏函数的寄存器地址、将所述第j个目标数据作为所述宏函数的配置值,调用所述宏函数生成符合AXI协议的数据对所述全可编程SOC芯片中的寄存器进行访问配置。
3.根据权利要求1所述的方法,其特征在于,所述全可编程SOC芯片中的寄存器的寄存器地址连续,则所述第i个目标地址为在基地址与偏移地址之和,所述偏移地址与循环次数变量i的取值相关,所述基地址为第一个目标地址。
4.根据权利要求1所述的方法,其特征在于,所述测试数据包括若干个测试输入值及各自对应的输出预估值,所述利用测试数据对所述第i个MIO端口的第j个功能模式进行测试得到验证结果,包括:
当所述第j个功能模式为所述第i个MIO端口作为输入端口时的功能模式时,在所述第i个MIO端口依次输入测试输入值、在所述全可编程SOC芯片内部IO模块的输出端获取对应的测试实际值并与对应的输出预估值比较得到验证结果;
当所述第j个功能模式为所述第i个MIO端口作为输出端口时的功能模式时,在所述全可编程SOC芯片内部IO模块的输入端依次输入测试输入值、在所述第i个MIO端口获取对应的测试实际值并与对应的输出预估值比较得到验证结果。
5.根据权利要求4所述的方法,其特征在于,所述在所述第i个MIO端口依次输入测试输入值、在所述全可编程SOC芯片内部IO模块的输出端获取对应的测试实际值,包括:利用$psprintf格式化输出函数根据循环次数变量i形成第i个MIO端口的后门操作地址并传入uvm_hdl_deposit函数作为参数,将所述测试数据中的测试输入值也传入uvm_hdl_deposit函数作为参数,调用uvm_hdl_deposit函数利用第i个MIO端口的后门操作地址对所述第i个MIO端口写入所述测试输入值;
利用$psprintf格式化输出函数第i个MIO端口的后门操作地址传入uvm_hdl_read函数作为参数,调用uvm_hdl_read函数利用所述第i个MIO端口的后门操作地址读取所述全可编程SOC芯片内部IO模块的输出端的值获取对应的测试实际值。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:输出对所述全可编程SOC芯片的MIO功能验证的仿真日志和仿真波形。
说明书 :
全可编程SOC芯片的MIO功能快速验证方法
技术领域
背景技术
式处理器和FPGA芯片、提供了一个更加灵活的解决方案,既具备了传统SOC芯片的所有优
势,又克服了传统SOC芯片灵活性差、专用性强以及设计复杂的缺点。
可编程SOC芯片中,每个MIO可以配置为输入/输出端口,在输入/输出两种情况,分别可以配
置成上拉和三态的状态,实现输出驱动强度的调整,同时还有多种不同的MOS类型,各种功
能模式在芯片实际使用过程中均会触发,因此验证过程复杂繁琐,目前对MIO的验证都是手
动编写每一个MIO测试案例,验证周期较长而且验证覆盖率难以保证,验证效率较低。
发明内容
少包括全可编程SOC芯片中的MIO端口的数量以及每个MIO端口的所有功能模式;
为第j个目标数据,使得全可编程SOC芯片中由第i个目标地址的寄存器控制的第i个MIO端
口工作在第j个目标数据对应的第j个功能模式下,i和j均为参数且起始值均为1;测试用例
调用uvm_hdl_*类函数利用测试数据对第i个MIO端口的第j个功能模式进行测试得到验证
结果;
中的寄存器进行配置的步骤;
所有MOS管传输类型、所有上拉状态电压值和所有三态电压值。
第一个目标地址。
值并与对应的输出预估值比较得到验证结果;
与对应的输出预估值比较得到验证结果。
hdl_deposit函数作为参数,调用uvm_hdl_deposit函数利用第i个MIO端口的后门操作地址
对第i个MIO端口写入测试输入值;
SOC芯片内部IO模块的输出端的值获取对应的测试实际值。
入到验证环境当中,自动在验证用例中遍历所有MIO端口进行包括读写测试、状态控制等的
功能快速验证,该方法可以一次性将所有MIO端口的所有功能模式覆盖,提升验证速度、提
高验证覆盖率和调试的效率。另外,该方法使得在MIO参数数据发生变化时可以快速迭代重
新仿真,减少了重复工作和后期环境的维护负担,满足全可编程SOC芯片的MIO功能验证的
需求。
附图说明
具体实施方式
ENV还集成了其他模块的agent环境。AXI系统环境Axi_env中主要包括AXI序列器模块(Axi_
sequence)、AXI驱动器(driver)、Master接口和Slave接口,本申请利用Master接口连接待
验证的全可编程SOC芯片。Axi_env是新思的VIP环境,集成了Axi_env就能调用AXI系统环境
中的序列sequence代替全可编程SOC芯片的cpu发送向全可编程SOC芯片中的寄存器、RAM和
DDR等模块发送命令进行读写操作。利用Axi_env中的各种sequence可以用来验证全可编程
SOC芯片内的不同软核和硬核,同时可以大大减少验证环境的调试时间。
端口的所有功能模式,每个MIO端口的功能模式包括该MIO端口在作为输入端口时的所有
MOS管传输类型、所有上拉状态电压值和所有三态电压值,以及该MIO端口在作为输出端口
时的所有MOS管传输类型、所有上拉状态电压值和所有三态电压值。
debug。测试代码利用了两个循环结构,外循环用来控制每一个MIO端口的验证,而内循环则
用来控制一个MIO端口的不同功能模式的验证,以此生成相应的验证用例自动对全可编程
SOC芯片的MIO功能实现快速验证。为了保证验证的完备性,简化验证流程,本申请将测试代
码封装成脚本,因此只需执行脚本即可构建得到验证用例,保证了代码准确性,减少验证周
期。同时当MIO网表发生变化导致MIO参数数据发生变化时,可以快速迭代重新仿真,减少了
重复工作和后期环境的维护负担。
个目标数据。全可编程SOC芯片中的MIO端口均由对应的寄存器进行控制,不同寄存器地址
的寄存器控制不同的MIO端口,当寄存器的配置值不同时,寄存器控制对应的MIO端口工作
在相应的功能模式下,因此本申请将第i个目标地址作为寄存器地址、将第j个目标数据作
为寄存器的配置值,从而使得全可编程SOC芯片中由第i个目标地址的寄存器控制的第i个
MIO端口工作在第j个目标数据对应的第j个功能模式下。其中,i和j均为参数且起始值均为
1。
作为宏函数的寄存器地址、将第j个目标数据作为宏函数的配置值,直接调用宏函数生成符
合AXI协议的数据对全可编程SOC芯片中的寄存器进行访问配置,大大减少了对案例代码编
写和维护时间,代码结构也变得十分简洁易懂。
取值相关,可以表示为偏移地址=(i‑1)*固定偏移量,因此第i个目标地址=基地址+(i‑
1)*固定偏移量,固定偏移量与MIO参数数据相关。比如在一个实际的例子中,全可编程SOC
芯片中共有54个MIO端口需要验证,每个MIO端口在作为输入/输出端口时分别有7种MOS管
传输类型,则第i个目标地址=基地址+(i‑1)*32’h4。
入值包括0/1输入值。
值并与对应的输出预估值比较得到验证结果。具体的,MIO端口在系统中的后门操作地址固
定,只有数组索引数字发生变化,比如第i个MIO端口的后门操作地址可以表示为xxx.MIOi,
因此可以结合循环次数变量i得到每个MIO端口的后门操作地址,而uvm_hdl_*类函数可以
直接接受字符串为地址进行读写访问,因此本申请利用$psprintf格式化输出函数根据循
环次数变量i形成第i个MIO端口的后门操作地址,然后将字符串形式的后门操作地址传入
uvm_hdl_deposit函数作为参数,将测试数据中的测试输入值也传入uvm_hdl_deposit函数
作为参数,调用uvm_hdl_deposit函数利用第i个MIO端口的后门操作地址就可以对第i个
MIO端口写入测试输入值。利用$psprintf格式化输出函数将字符串形式的第i个MIO端口的
后门操作地址传入uvm_hdl_read函数作为参数,调用uvm_hdl_read函数利用第i个MIO端口
的后门操作地址就读取全可编程SOC芯片内部IO模块的输出端的值获取对应的测试实际
值。
值并与对应的输出预估值比较得到验证结果。具体操作方式也类似,本申请不再赘述。
程SOC芯片中的寄存器进行配置的步骤,也即重新执行上述(1)和(2)对该MIO端口的下一个
功能模式进行验证,或者对下一个MIO端口进行验证。其中,N为第i个MIO端口的功能模式的
总数量,M为全可编程SOC芯片中的MIO端口的数量。
于验证人员分析。
间内可以快速重新仿真debug,缩短了芯片验证周期。本发明具有灵活生成不同芯片MIO的
验证案例的功能,还能够减少环境代码和测试文件的编写维护,提高验证效率,最大限度的
提高验证模块的覆盖率,能够满足全可编程SOC电路MIO功能验证的需求。
化,均应认为包含在本发明的保护范围之内。