描述
在BFM测试平台bfm_system_tb.v中执行多个单读任务时,仿真器会产生一个错误,指示有太多待处理事务。
解
自动生成的AXI BFM测试平台仅执行一个数据读取任务。但是,如果修改测试平台以执行多个RECEIVE_READ_DATA API任务,则需要进行其他修改。根据DS824:AXI总线功能模型 ,用户需要调用’remove_pending_transaction’任务以确保挂起的事务计数器递减。否则,当计数器达到系统指定的最大未完成事务数时,仿真将失败。这是由RECEIVE_READ_BURST和RECEIVE_WRITE_RESPONSE API任务自动完成的。
为了执行多个RECEIVE_READ_DATA任务,必须修改bfm_system_tb.v以在收到所有数据后包含“remove_pending_transaction”任务。请务必进行以下修改:
任务自动SINGLE_READ;
输入[`ADDR_BUS_WIDTH-1:0]地址;
输出[`C_SLV_DWIDTH-1:0]数据;
输入[`PROT_BUS_WIDTH-1:0] prot;
输出[`RESP_BUS_WIDTH-1:0]响应;
开始
dut.bfm_lite_processor.bfm_lite_processor.cdn_axi4_lite_master_bfm_inst.SEND_READ_ADDRESS(地址,PROT);
dut.bfm_lite_processor.bfm_lite_processor.cdn_axi4_lite_master_bfm_inst.RECEIVE_READ_DATA(数据,响应);
dut.bfm_lite_processor.bfm_lite_processor.cdn_axi4_lite_master_bfm_inst.remove_pending_transaction();
CHECK_RESPONSE_OKAY(响应);
结束
结束任务
没有回复内容