MCDF实战验证难点总结

MCDF: 寄存器模块,上行通道模块,Arbiter仲裁模块,数据整形模块

功能:MCDF(Multi-Channel Data Formatter)多通道数据整形器上行多个通道数据存入FIFO,经过Arbiter仲裁(优先级,轮询机制),完成指定通道的数据打包,寄存器(APB总线)可以控制各个通道的开关优先级以及数据包长度

寄存器:读写:上行通道开关SLV_EN(3:0),初始态 4'b0000

奇偶校验清零Parity_err_clr(3:0),初始态 4'b0000

上行通道标识SLVX_ID(7:0),初始态 8'b03020100

数据打包长度SLVX_LEN(7:0),初始态 8'b00000000

        只读:FIFO余量,初始态 32’h20 (32深度)

              奇偶校验出错,初始态 0

测试点:复位值测试(内建测试seq;DUT 复位, RAL 复位后 mirror(CHEACK功能)函数自动检查DUT复位值与RAL复位值是否一致)

        读写测试(内建测试SEQ;前门写后门读等,只读寄存器只能后面写;)

        翻转测试(内建测试SEQ;进行读写,FFFF,0000, 5A5A,A5A5等)

难点:

APB总线VIP开发: ① 环境搭建(master agent,slave agent)

                  ② 时序分析 (setup, enable阶段;mst与slv时序不同,slv滞后一拍)

                  ③ 验证策略(进行读写功能测试;slv端用关联数组模拟接受数据,并发出响应;mst端先用关联数组记录写入的数据,之后在与读出数据进行对比)

                   ④ 时序检查(SVA检查时序及功能)

                       功能:1) psel,penable, cross(idle, setup, enable)

                            2) pwrite (write,read),cross pwrite,psel

                            3) 传输类型:single,burst

                            4)读写功能:写读,写写,读写,读读

                       时序:psel为高时,paddr不可以为X值

                             Psel拉高下一个周期,penable拉高

                             Penable和pready为高时,下一周期penable拉低

                             Psel和pwrite为高时,pwdata保持不变

                             在下一次传输前,上一次的paddr和pwrite保持不变(低功耗)

                             Penable 和pready为高同一周期,prdata应该发生变化

上行通道:data(31:0),data_parity,vaild,wait,parity_err

难点:环境搭建TLM通信时序问题,先用seq_item_port.get_next_item阻塞来获取req,但获取的item如果该通道开关没开,则一直等待不到wait,无法执行seq_item_port.item_done,数据发生会出现挂死现象。解决办法,在发送激励时先判断通道开关情况,解决办法:①通过p_sequencer获取apb_interface的开关通道 ②通过config_db#()配置到seq组件③通过RAL直接调用

Arbiter仲裁:轮询机制(复位值通道3优先级最高,每次获取数据时优先级向右侧移动一位),按照优先级(每次获取时都是按照最高优先级,直到最高优先级通道FIFO没数据,才会转移到下一优先级)

数据整形模块formatter:pkg_vaild, pkg_fst, pkg_data(31:0), pkg_lst, rev_rdy(数据包可以通过rev_rdy拉低来延迟,采样也通过vaild与rev_rdy同时为高踩有效)

难点:该模块主要负责采集整形数据,送给scoreboard与上行通道发送到数据进行对比。其次,需要模拟下行通道来收集formatter打包的数据,采用不同深度(可配置)的FIFO来模拟下行端口接受formatter的数据包,以及响应rev_rdy信号

下行端口接收情况:当formatter的valid信号有效时,表明打包数据已准备好,当下行端口的FIFO有余量时就可以采集信号并反馈rev_rdy有效(默认为0),当下行端口FIFO没有余量时,则继续等待下一周期;

下行端口发送情况:随机几个周期从FIFO取出一个数据;

Reference modle:采集上行通道数据,根据formatter打包数据规则进行模拟打包

难点:1.将每个通道检测到的数据分别打包(通过RAL来获取len长度进行打包),再依据formatter检测到的数据包来选择通道,这就省去了优先级情况

     2.采用TLM fifo 来通信,上行通道的数据都在FIFO中,没有时序要求,合适取出数据打包成为问题?采用阻塞(get/peek)办法,只要FIFO有数据,就将FIFO里数据取出并打包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值