基于UVM 的节能化电梯运行控制系统设计和验证

2023-04-13 02:02梁光胜李朝洋杨松梁兆楷
电子制作 2023年4期
关键词:参考模型状态机覆盖率

梁光胜,李朝洋,杨松,梁兆楷

(华北电力大学 电气与电子工程学院,北京,102206)

0 引言

随着集成电路复杂度增长,验证工作成为制约集成电路发展的瓶颈,高效的验证方法不仅能确保设计功能正常,还可以提高设计效率[1~2]。随着城市化进程日益加快,电梯使用量增加,电梯能耗在建筑总能耗中占比较大,节能化电梯日益受到重视[3~4]。本文从提升验证效率和可靠性角度,以SystemVerilog 为验证语言,以电梯运行控制系统为DUT,搭建了基于UVM 的验证平台,采用受约束的随机测试用例,通过收集覆盖率完成对测试进展的度量,根据仿真结果优化验证环境,提高UVM 验证平台的高重用性、可移植性、可靠性和可扩展性。

1 节能化电梯运行控制系统的设计

1.1 节能化电梯运行控制系统的功能规划

电梯运行控制系统以FPGA 作为核心控制芯片,通过按键模拟外部各种信号的输入,借助LED 亮灭和数码管显示模拟真实电梯的运行过程,系统可实现对电梯多种运行模式的转换与控制。

节能化电梯运行控制系统的主要功能如下:①响应电梯轿厢内外的按键请求指令,按方向优先原则依次响应;②当电梯运行到各个楼层时,相应楼层指示灯亮起,数码管显示楼层数;③外部控制开关,一层只有向上按钮,顶层只有向下按钮,其余楼层有上下行按钮;④具有超载报警、预超载和故障报警功能,此时电梯门处于打开状态,直至故障解除;⑤同一时间既有上行又有下行指令时,电梯会在响应完同一方向指令后再响应另一方向指令;⑥电梯在高峰时段自动切换到分层模式,电梯只响应奇数层呼梯信号;⑦当没有呼梯指令时,电梯会在指定时间后自行关闭电梯门和轿厢照明,进入低功耗等待状态。

1.2 FPGA 控制模块的顶层设计

采用自顶向下的设计方法,电梯运行控制系统中FPGA控制模块顶层架构设计如图1 所示,由信号控制、运动判断、运动状态机和输出控制模块组成。

图1 FPGA 控制模块的顶层架构

1.3 运动判断模块的设计

运动判断模块是电梯运行的主要控制模块。根据电梯运行方向优先原则和运行警示原则对输入信号赋予不同的优先级,其中轿厢所处楼层优先级最低。超重信号和预超重信号优先级最高,处于第一优先级,其有效时整个电梯进入等待状态。上下行脉冲处于第二优先级,在上行脉冲有效时,上行信号优先级高于下行信号;在下行脉冲有效时,下行信号优先级高于上行信号。

1.4 运动状态机的设计

电梯按照方向优先和就近原则运行,相同用户指令在不同运行状态时会执行不同的运行程序。运行状态有上行态、下行态、空闲态。当处于上行态时,上行指令比下行指令优先级高;当电梯处于空闲态时,与电梯停靠楼层邻近的用户指令优先级高。

判断模块输出为状态机输入,主要信号包括上行、下行、到达相应楼层、开门、关门、启动、结束。状态机有空闲、等待、上行、下行、开关门5 种状态,如图2 所示。

图2 电梯运行控制系统的状态机

2 UVM 验证平台的构建

采用SystemVerilog 构建层次化和模块化的UVM 验证平台,主要目的是确保待测模块的正确性与完备性,主要任务是模拟待测模块可能出现的情况,产生相应随机化激励信号,驱动待测模块运行[5~8]。

2.1 UVM 验证平台的架构

UVM 验证平台的架构如图3 所示,包括待测模块DUT、驱动模块Driver、监测模块Monitor、激励产生模块Sequence、激励仲裁模块Sequencer、参考模型Reference Model、比较器Scoreboard、验证环境Agent和Env、测试顶层Top 等组件。

图3 UVM 验证平台的架构

sequence 产生待测模块的所有激励信号,并包装成transaction 事务包,发送给sequencer,sequencer 进行内部检查确认后再发送给driver,driver 用这些激励信号驱动DUT 和参考模型,monitor 对DUT 输入输出结果监测,计分板将收集并比对DUT 的输出和参考模型的结果。

由于driver、sequencer 和monitor 使用同一通信协议且结构相似,因此可集成在一个agent 中。而agent、scoreboard 和参考模型属于同一层次的模块,将其集成在一起构成了整个验证平台的基本框架,同时也构建了UVM验证平台的树形结构。

2.2 UVM 验证平台的通信传输机制

UVM 验证平台各组件采用TLM 通信方式,成功地将模块内的计算和模块之间的通信从时间跨度方面剥离开,通过事务级端口将各组件通信时所需变量和约束条件打包传输,采用虚拟接口完成DUT与验证组件之间的通信和时序同步。

针对DUT 设置虚拟接口信号,通过config_db 实现验证平台与DUT 交互;Driver 组件通过模拟传输协议驱动DUT 和参考模型;参考模型以新编程语言编写待测模块代码并将运行结果传给计分板;比较器将待测模块和参考模型的输出结果比对分析。

2.3 电梯运行控制系统UVM 验证平台实现

按照层次化和模块化原则构建UVM 验证平台,在顶层实例化电梯控制系统,使用config_db 机制通信,首先在顶层完成set 操作:

uvm_config_db#(virtual ele_if)::set(null, "uvm_test_top.env.i_agt.drv", "vif", m_ahb_if);

uvm_config_db#(virtual ele_if)::set(null, "uvm_test_top.env.i_agt.mon", "vif", m_ahb_if);

其中第一个和第二个参数联合起来组成目标路径,与此路径符合的目标才能收信。第一个参数必须是一个uvm_component 实例的指针,第二个参数是相对此实例的路径。第三个参数表示一个记号,用以说明这个值是传给目标中的哪个成员,第四个参数是要设置的值。然后利用TLM 通信中get 操作完成对虚拟接口数据的获取,在底层driver 组件和monitor 组件中完成get 操作,同时判断底层组件是否接收到虚拟接口中的数据:

if(!uvm_config_db#(virtual ele_if)::get(this, "", "vif", vif))

‘uvm_error("NOVIF",{"virtual interface must be set for: ",get_full_name(),".vif"});

以此完成driver、monitor 与电梯控制系统的互联通信。

验证平台组件和待测模块通过虚拟接口互联,避免使用绝对路径,增强组件的可移植性和可重用性。虚拟接口的主要信号通过rand 语句将所要定义的信号变量设为随机变量,完成对接口信号字段的定义和随机化,使信号能取所定义范围中任何一个随机数。通过关键字constraint 约束随机信号,从而产生出有效的激励供测试平台调用。这种随机化激励完善了激励的完备性,可测试出DUT 更多的边界条件。虚拟接口主要信号包括各楼层按键信号rand bit [16:0] key、电梯使能信号rand bit key_en、电梯超载和预超载以及故障报警信号rand bit key_weight、电梯运行模式控制信号rand bit [1:0] key_ctl、电梯运行显示信号rand bit [5:0] led、电梯楼层显示信号rand bit [7:0] seven_tube。

Driver 和Monitor 是验证平台与DUT 交互的组件,其功能是收集事务级数据,根据待测模块功能和时序要求将其转换成DUT 各输端口信号。Driver 继承uvm_component的uvm_driver 类,首先通过宏完成driver 的工厂注册,将其登记在UVM 内部网表;其次端口例化,build_phase完成与DUT 互联;最后run_phase 完成所有信号时序描述,将事务级端口数据转换成信号级驱动DUT。run_phase 包含reset_phase 和do_drive 等任务,reset_phase 完成复位工作,do_drive 完成节能化电梯运行控制系统端口的时序描述和事务级端口数据的转换。

参考模型继承uvm_component 类,是针对DUT 的验证基准,通过算法模仿DUT 的功能需求,并认定所实现的功能是完全正确的。参考模型接入与DUT 相同的激励,其输出与DUT 输出自动比对,结果一致时认为DUT 符合设计需求,不一致时判定DUT 存在错误或缺陷。创建参考模型时,需要完成组件继承、宏的工厂注册,并定义与DUT 对应的功能模块;然后定义两个端口,其中一个端口接受Driver发来的事务级信号作为输入,另一端口则把输出的事务级信号发送到Scoreboard 进行数据的自动比对。参考模型在build_phase 中完成初始化。当输入端口接收到Driver的信号时,判断电梯控制系统的运行模式,将结果发送到Scoreboard 进行比对。

在底层组件定义完毕后,创建验证环境Agent 和Env。每个测试的功能点可以使用不同的Agent 进行打包,所有的Agent 统一在Env 中实例化,根据不同的需求调用不同的Agent。所有的env 都派生自uvm_env,与底层组件一样使用uvm_component_utils宏来实现工厂注册。在build_phase中使用new 函数完成i_agent、o_agent、参考模型和比较器等底层组件的实例化,并指定各个agent 的工作模式;在connect_phase 中使用uvm_tlm_analysis_fifo 完成各个组件的事务级通信。

3 节能化电梯运行控制系统的验证

3.1 功能验证点提取

运行UVM 验证平台,检验电梯控制系统能否根据外界输入正常工作,能否完成预期的各项功能,其功能验证点和方案如表1 所示。

表1 电梯运行控制系统的功能验证点和验证方案

3.2 验证过程数据报告

编写多个测试用例来验证不同测试点的完备性,利用VCS 编译仿真并产生编译报告、覆盖率结果。通过make命令对各验证组件和DUT 编译,若编译成功则生成可执行文件和编译结果信息。通过运行可执行文件,选择不同的测试项testcase 仿真,利用“'uvm_info”宏打印当前比对的事务信息,比对成功时打印“Compare successfully”等信息,比对失败则报错。电梯运行控制系统的部分数据报告如图4 所示。

图4 电梯运行控制系统的部分数据报告

3.3 DVE 界面波形

验证平台通过虚拟接口与DUT 连接,将ele_slv_if.sv中虚拟接口信号导入DVE 波形分析器,选用不同测试用例就可得到DUT 不同的输入输出波形,如图5 所示。

图5 电梯运行控制系统的部分运行波形

3.4 覆盖率

覆盖率是评估验证工作进度与验证是否完备的指标,包括代码覆盖率和功能覆盖率。代码覆盖率分为语句覆盖率、条件覆盖率、决策覆盖率、跳转覆盖率和状态机覆盖率,是衡量待测模块运行情况的标准。在仿真过程中EDA 软件自动收集代码覆盖率,当参数NUMBER_PACKETS 为5000、TEST_MODE 为1、+ntb_random_SEED 为1651198619 时,其覆盖率报告如图6 所示。

图6 电梯运行控制系统的覆盖率报告

完成验证后再下载到FPGA 芯片中,应用开发板中,可观察到节能化电梯运行控制系统功能已全部实现,UVM 验证平台的重用性和完备性良好。

4 结论

本文以电梯运行系统为待测对象,搭建了UVM 通用验证平台,以覆盖率为验证指标,检测了UVM 验证平台的高重用性、可移植性、可靠性和可扩展性。

猜你喜欢
参考模型状态机覆盖率
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
我国全面实施种业振兴行动 农作物良种覆盖率超过96%
基于有限状态机的交会对接飞行任务规划方法
基于环境的军事信息系统需求参考模型
语义网络P2P参考模型的查询过程构建
基于喷丸随机模型的表面覆盖率计算方法
2015年湖南省活立木蓄积量、森林覆盖率排名前10位的县市区
基于参考模型的制造业MES需求建模
基于数据的PID设计方法比较
FPGA设计中状态机安全性研究