AHB to APB Bridge验证项目

AHB to APB Bridge验证项目

目录

第一章 APB协议... 5

1.1 APB2协议... 5

1.1.1 读操作... 5

1.1.2 写操作... 6

1.2 APB3协议... 6

1.2.1 PREADY信号... 7

1.2.2 PSLVERR信号... 7

1.3 APB4协议... 8

1.4 APB5协议... 9

第二章 AHB协议... 9

2.1 版本说明... 9

2.2 信号说明... 10

2.2.1 简述... 10

2.2.2 全局信号... 12

2.2.3 master信号... 12

2.2.4 slave信号... 14

2.2.5 decoder信号... 14

2.2.6 multiplexor信号... 15

2.3 传输协议... 15

2.3.1 基本传输... 15

2.3.2 传输类型... 17

2.3.3 锁定传输... 18

2.3.4 传输size. 18

2.3.5 burst操作... 19

2.3.6 waite传输... 21

2.3.7 Protection control 22

2.4 总线互连... 23

2.5 从机响应信号... 24

第三章 测试点分解... 25

3.1 验证计划... 25

3.1.1 验证计划的内容... 25

3.1.2 测试点... 25

3.2 模块级测试点分解... 27

3.3 AHB to APB sync-down bridge. 30

3.4 AHB to APB sync-down bridge 验证计划... 30

3.4.1 Metrics Driven Verification(指标驱动验证,MDV)... 30

3.4.2 AHB-to-APB Bridge 验证计划... 31

第四章 UVM环境搭建... 33

4.1 apb_slave_agent环境搭建... 33

4.1.1 apb_slv_tran. 33

4.1.2 apb_slv_if 34

4.1.3 apb_slv_drv. 35

4.1.4 apb_slv_mon. 37

4.1.5 apb_slv_sqr 38

4.1.6 apb_slv_agt 38

4.2 ahbl_master_agent环境搭建... 40

4.2.1 ahbl_mst_tran. 40

4.2.2 ahbl_mst_if 43

4.2.3 ahbl_mst_pkt 43

4.2.4 ahbl_mst_drv. 44

4.2.5 ahbl_mst_mon. 45

4.2.6 ahbl_mst_agt 47

4.3 顶层tb搭建... 47

4.3.1 testbench. 47

4.3.2 SVA编写... 49

4.4 ahbl2apb_pkg. 50

4.4.1 env搭建... 50

4.4.2 scoreboard搭建... 50

4.4.3 功能覆盖率... 53

4.4.4 env_pkg. 54

4.5 测试用例... 54

4.5.1 ahbl2apb_base_test 54

4.5.2 ahbl_mst_single_read32. 55

4.5.3 ahbl_mst_single_write32_apb_slv_nrdy. 55

4.5.4 ahbl_mst_burst 56

4.5.5 ahbl_mst_burst_apb_slv_slverr 57

4.5.6 ahbl_mst_tight_transfer 57

4.6 ahbl_mst_seqlib. 58

4.6.1 ahbl_mst_basic_seq. 58

4.6.2 ahbl_mst_single_read32_seq. 59

4.6.3 ahbl_mst_single_write32_seq. 59

4.6.4 ahbl_mst_tight_burst_seq. 60

4.7 apb_slv_seqlib. 60

4.7.1 apb_slv_basic_seq. 60

4.7.2 apb_slv_rdy_seq. 61

4.7.3 apb_slv_nrdy_seq. 61

4.7.4 apb_slv_tight_seq. 61

第五章 项目总结... 62

5.1 项目成果... 62

5.2 面试经验... 62

第一章 APB协议

1.1 APB2协议

一个典型的APB总线架构如上图所示,APB协议是为了实现与外围低速、低功耗设备进行数据传输。在APB总线中,唯一的master是APB Bridge,其他的外围设备均为slave。

1.1.1 读操作

下图为APB的读操作,一共分为两拍:

T1时刻APB master将PSEL拉高,(PENABLE正常情况下此时为低),PWRITE拉低,APB master驱动PADDR。

T2时刻APB master将PENABLE拉高,APB slave采样PSEL、PENABLE、PADDR和PWRITE,如果满足写操作的时序要求,就驱动PRDATA(实际上只要在T3之前准备好即可)。

T3时刻APB master将PSEL和PENABLE都拉低(如果下面还要继续操作该slave,那PSEL也可以保持为高),并采样PRDATA,PADDR和PWRITE将保持(这是APB协议出于低功耗考虑要求的,减少额外的翻转,当下一个操作过来时这两个信号自然会变化)。

需要注意的是,通常片选信息包含在PADDR中。在RTL设计中会将不同的地址段对应到不同的slave,master发出一个地址,那么对应的slave的PSEL就会拉高。

1.1.2 写操作

下图为APB的写操作,过程和读操作非常类似,稍有区别的是APB master需要在T1时刻驱动PWDATA,并保持到写操作完成。

总的来说,APB的读写操作都需要两拍才能完成,通常将第一拍称为Setup phase,第二拍称为Access phase

1.2 APB3协议

APB3相较于APB2新增了PREADYPSLVERR两个信号。

1.2.1 PREADY信号

PREADY信号表示slave是否可以立即响应master要求的操作。PREADY为高表示slave可以响应,为低则表示还没准备好,master需要等待,并且在此期间master需要保持PADDR、PWRITE、PSEL和PENABLE。

举例说明:

T2时刻slave采样到PSEL=1、PENABLE=0,那么slave理应准备好对应的PRDATA,但slave无法立即准备好,于是把PREADY拉低,直到T4时刻PRDATA准备好,拉起PREADY。

T3时刻master采样到PREADY为低,于是保持PADDR、PWRITE、PSEL和PENABLE。直到T5时刻采样到PREADY为高,此时PRDATA有效,读数据完成,拉低PSEL和PENABLE。

1.2.2 PSLVERR信号

PREADY信号是让master进行等待,而PSLVERR信号则是通知master本次操作是否发生错误。PSLVERR信号只在传输的最后一拍有效,即PSEL、PENABLE和PREADY均为高时。当PSEL、PENABLE或PREADY为低时,建议将PSLVERR拉低,但这不是必需的。

需要知道的是,PSLVERR只是一个通知标识,它并不能阻止数据的读写,也就是说即使传输发生错误,数据也是会照样传过去,毕竟物理的连接是存在的,只不过master知道错误后,可以针对性的做出处理。

1.3 APB4协议

APB4相较于APB3增加了PPROT和PSTRB两个信号,其中PSTRB更常用些。

PPROT信号如上图所示,下面主要解释一下PRSTB信号。首先明确PRSTB信号只在写操作时有效,读操作时需要设置为4’b0000。PRSTB信号的出现是因为APB的写总线是32位的,但是有时候我们并不需要操作全部的位,并且需要保证不会误写了某些位,这时就需要PRSTB这样的信号。

它有4bit,每个bit对应8bit(1byte)写总线,为高则代表对应的byte上的数据是有效的,否则无效。

1.4 APB5协议

APB5相较于APB4增加了PWAKEUP信号和USER系列信号,USER系列是APB为用户提供的可定制的信号,一般情况下建议不使用USER信号。APB协议接口没有定义这些信号的功能,如果两个组件以不兼容的方式使用相同的USER信号,则会导致互操作性问题。

PWAKEUP用来指示本次传输是否有效,如果传输的时候PWAKEUP信号不使能,则slave会认为这一笔数据传输无效。设计上建议PWAKEUP先于PSEL一个周期拉高。也可以用PWAKEUP控制APB的时钟达到低功耗的目的。

第二章 AHB协议

2.1 版本说明

2.2 信号说明

2.2.1 简述

AHB总线的基本原理是采用主从结构,其中一个或多个主设备通过总线与一个或多个从设备通信。主设备可以是CPU、DMA控制器、图形处理器等高性能设备,从设备可以是存储器、外设控制器等低速设备。AHB总线采用了高度并行的传输模式和分时复用的地址和数据传输方式,从而实现了高带宽和低延迟的数据传输。

下图是 “多主从”的AHB总线结构,仲裁器、解码器、选择器以及互连线等通常称之为互连结构。这种结构的工作机制如下:

首先master会向仲裁器发送传输请求,仲裁器依据所设计的仲裁规则,选择合适的master获取总线访问的权限,之后master会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。

同样响应的数据会通过Decoder解析,然后返回给对应的master。

通过这种多路复用的机制实现多对多的访问。但是这种结构有一个缺点就是一次能有一对maste与slave通信,无法实现多对多的同时通信,对于带宽需求比较大或者实时性要求较高的系统不太适合。

在本项目中,Bridge就是一个AHB slave,它在APB总线一侧是唯一的master,而在AHB一侧,它只是其中一个slave。

下图是“一主多从”的系统,从图中可以看到Decoder根据HADDR信号产生HSELx信号对slave进行片选,同时产生对多路选择器的控制信号,以选择哪个slave读出的数据。在多从机的系统中,唯一的、中央解码器和多路复用选择器是必须的。

2.2.2 全局信号

信号

信号源

描述

HCLK

时钟源

总线时钟对所有的总线传输进行计时。所有的信号定时都与HCLK的上升沿有关。

HRESETn

复位控制器

总线复位信号为低电平有效,复位系统和总线。这是唯一低电平有效的信号。

2.2.3 master信号

信号

接收方

描述

HADDR[31:0]

Slave and decoder

32位系统地址总线

HBURST[2:0]

Slave

burst类型指示传输是单个传输还是形成burst的一部分。

支持4、8和16拍的固定长度的burst。burst可以是递增的,也可以是wrap的。还支持增加未定义长度的burst。

HMASTLOCK

Slave

高电平时,表示当前传输是锁定序列的一部分。它与地址和控制信号具有相同的时序。

HPROT[3:0]

Slave

保护控制信号提供关于总线访问的附加信息,并指示应该如何在系统内处理访问。

信号指示传输是操作码提取还是数据访问,以及传输是特权模式访问还是用户模式访问。

HPROT[6:4]

Slave

添加扩展存储器类型的HPROT信号的3位扩展。

如果AHB5 EXTENDED_MEMORY_TYPE属性为True,则支持此信号扩展。

HSIZE[2:0]

Slave

指示传输的大小,通常为字节、半字或字。该协议允许更大的传输大小,最大可达1024位。

HNONSEC

Slave and decoder

指示当前传输为非安全传输或安全传输。

如果AHB5 SECURE_TRANSFERS属性为True,则支持此信号。

HEXCL

Exclusive Access Monitor

独占传输。表示传输是独占访问序列的一部分。

如果AHB5 EXCLUSIVE_TRANSFERS属性为True,则支持此信号。

HMASTER[3:0]

Exclusive Access Monitor and slave

主机标识符。如果主程序有多个独占能力的线程,则由主程序生成。

由互连修改以确保每个主设备被唯一标识。

如果AHB5 EXCLUSIVE_TRANSFERS属性为True,则支持此信号。

HTRANS[1:0]

Slave

表示当前传输的类型。可以是:

• IDLE

• BUSY

• NONSEQUENTIAL

• SEQUENTIAL

HWDATA[31:0]

Slave

写入数据总线在写入操作期间将数据从主机传输到从机。建议的最小数据总线宽度为32位。但可以将其扩展以实现更高的带宽操作。

HWRITE

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值