路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

验证的结构篇之二:硬件设计描述

已有 2353 次阅读| 2016-11-27 22:56 |个人分类:验证系统思想|系统分类:芯片设计

为了模拟实际情景,我们给出将贯穿于SystemVerilog和UVM章节的硬件设计,并且遵循硬件设计描述的方式给出它的功能、时序、寄存器描述、结构。在以后的SV和UVM部分中,我们也将围绕这个硬件设计考虑测试平台的构成。本节对待测设计的描述也将作为第二部分(SV、UVM)的主要实例,日后对测试平台的构建需要经常引用该设计的功能描述,请读者对此注意。同时,熟悉硬件描述的方式,也是进入验证领域的一项基本技能。那么,就从这个规模适中的设计开始读起来吧。

功能描述
该设计我们称之为多通道数据整形器MCDF,multi-channel data formatter),它可以将上行(uplink)多个通道数据经过内部的FIFO,最终以数据包(data packet)的形式送出。
由于上行数据和下行数据的接口协议不同,我们也将在后面的接口描述和接口时序部分进一步讲解。此外,多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能。

设计结构
从上图的MCDF的结构来看主要可以分为如下几个部分:
  1. 上行数据的通道从端(Channel Slave),负责接收上行数据,并且存储到与之对应的FIFO中。
  2. 仲裁器(Arbiter)可以选择从不同的FIFO中读取数据,进而将数据进一步传送至整形器(formatter)。
  3. 整形器(Formatter)将数据按照一定的接口时序送出至下行接收端。
  4. 控制寄存器(Control Registers)有专用的寄存器读写接口,负责接收命令并且对MCDF的功能做出修改。详细的寄存器描述在后面的寄存器描述部分。

接口描述
系统信号接口
  • CLK(0):时钟信号。
  • RSTN(0):复位信号,低位有效。

通道从端接口
  • CHx_DATA(31:0):通道数据输入。
  • CHx_VALID(0):通道数据有效标志信号,高位有效。
  • CHx_READY(0):通道数据接收信号,高位表示接收成功。

整形器接口
  • FMT_CHID(1:0):整形数据包的通道ID号。
  • FMT_LENGTH(4:0):整形数据包长度信号。
  • FMT_REQ(0):整形数据包发送请求。
  • FMT_GRANT(0):整形数据包被允许发送的接受标示。
  • FMT_DATA(31:0):数据输出端口。
  • FMT_START(0):数据包起始标示。
  • FMT_END(0):数据包结束标示。

控制寄存器接口
  • CMD(1:0):寄存器读写命令。
  • CMD_ADDR(7:0):寄存器地址。
  • CMD_DATA_IN(31:0):寄存器写入数据。
  • CMD_DATA_OUT(31:0):寄存器读出数据。

接口时序
通道从端接口时序
当valid为高时,表示要写入数据。如果该时钟周期ready为高,则表示已经将数据写入;如果该时钟周期ready为低,则需要等到ready为高的时钟周期才可以成功将数据写入。


整形器接口时序
整形器发送数据是按照数据包的形式发送的,可以选择数据包的长度有4、8、16和32。整形器必须完整发送完某一个通道的数据包,才可以转而准备发送下一个数据包,在发送数据包期间,fmd_chid和fmt_length应该保持不变,直到数据包发送完毕。

在整形器准备发送数据包时,首先应该将fmd_req置为高,同时等到接收端的fmt_grant。当fmd_grant变为高时,应该在下一个周期将fmt_req置为低。fmt_start也必须在接收到fmt_grant高有效的下一个时钟被置为高,且需要维持一个时钟周期,即一个时钟周期的脉冲信号。

在fmt_start被置为高有效的同一个周期,数据也同时传送,数据之间不允许有空闲周期,即应该连续发送数据,直到发送完最后一个数据,同时,fmd_end也应当被置为高,且保持一个时钟周期。

而相邻的数据包之间应该保持至少一个时钟周期的空闲,即fmd_end脉冲回复为低以后,至少需要经过一个时钟周期,fmd_req才可以被再次置为高。

控制寄存器接口时序
控制寄存器接口上首先需要在每一个时钟解析cmd,当cmd为写指令时,即需要把数据cmd_data_in写入到cmd_addr对应的寄存器中;当cmd为读指令时,即需要从cmd_addr对应的寄存器中读取数据,在下一个周期,cmd_addr对应的寄存器数据被输送至cmd_data_out接口。


寄存器描述

地址0x00 通道1控制寄存器 32bits 读写寄存器
bit(0):通道使能信号。1为打开,0位关闭。复位值为1。
bit(2:1):优先级。0为最高,3为最低。复位值为3。
bit(5:3):数据包长度,解码对应表为, 0对应长度4, 1对应长度8,2对应长度16,3对应长度32,其它数值(4-7)均暂时对应长度32。复位值为0。
bit(31:6):保留位,无法写入。复位值为0。

地址0x04 通道2控制寄存器 32bits 读写寄存器
同通道1控制寄存器描述。

地址0x08 通道3控制寄存器 32bits 读写寄存器
同通道1控制寄存器描述。

地址0x10 通道1状态寄存器 32bits 只读寄存器
bit(7:0):上行数据从端FIFO的可写余量,同FIFO的数据余量保持同步变化。复位值为FIFO的深度数。
bit(31:8):保留位,复位值为0。

地址0x14 通道2状态寄存器 32bits 只读寄存器
同通道1状态寄存器描述

地址0x18 通道3状态寄存器 32bits 只读寄存器
同通道1状态寄存器描述


至此我们将MCDF的功能描述完毕,从下一节开始我们分别分析如何给出激励、检测以及比较数据,同时也需要从效率的角度来考虑,如何同时为各个模块构建模块验证平台,最终可以组合为一个整体验证平台,来完成验证环境的集成

谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 13:18 , Processed in 0.018806 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部