You are on page 1of 101

分类号 TN47 学号 GS12062312

U DC 密级 公 开

工程硕士学位论文

高性能 M-DSP 仿真/调试部件的

设计与实现

硕士生姓名 黄佳帅

学 科 领 域 软件工程

研 究 方 向 高性能微处理器设计

指 导 教 师 刘 仲 副研究员

万江华 副研究员

二〇一五年三月
Design and Implementation of The High
Performance M-DSP Emulation/Test Unit

Candidate:Huang JiaShuai

Advisor:Prof. LiuZhong
Prof. Wan JiangHua

A thesis
Submitted in partial fulfillment of the requirements
for the professional degree of Master of Engineering
in Software Engineering
Graduate School of National University of Defense
Technology
Changsha,Hunan,P.R.China
(March,2015)
国防科学技术大学研究生院工程硕士学位论文

目 录

摘 要 ....................................................................................................................... i

ABSTRACT ............................................................................................................. ii

第一章 绪论 .......................................................................................................... 1
1.1 课题的研究背景和意义 ................................................................................. 1
1.1.1 DSP 芯片的主要特点 .......................................................................... 1
1.1.2 高性能 DSP 的发展趋势 ..................................................................... 2
1.1.3 DSP 技术的发展意义 .......................................................................... 3
1.2 仿真/调试技术的研究 .................................................................................... 3
1.2.1 仿真/调试技术的概述 ......................................................................... 3
1.2.2 片上调试技术的研究 .......................................................................... 4
1.2.3 M-DSP 的仿真/调试机制 .................................................................... 5
1.3 课题的研究内容 ............................................................................................. 5
1.4 课题的组织结构 ............................................................................................. 6

第二章 M-DSP 的体系结构 ................................................................................ 8


2.1 M-DSP 的体系结构概要 ................................................................................ 8
2.1.1 M-DSP 的总体结构 ............................................................................. 8
2.1.2 M-DSP 的内核结构 ............................................................................. 9
2.2 M-DSP 的指令集 .......................................................................................... 10
2.2.1 M-DSP 的指令格式 ........................................................................... 10
2.2.2 指令包及执行包的结构 .................................................................... 11
2.3 M-DSP 的指令流水线设计 .......................................................................... 12
2.3.1 M-DSP 的基本指令流水线 ............................................................... 12
2.3.2 流水线的阻塞与清空 ........................................................................ 14
2.3.3 M-DSP 的分支延迟槽 ....................................................................... 15
2.4 M-DSP 的仿真/调试结构 ............................................................................. 16
2.4.1 仿真/调试的基本准则 ....................................................................... 16
2.4.2 基于 JTAG 的仿真/调试方案 ........................................................... 16
2.4.3 基于 PCIE 的仿真/调试方案............................................................. 16
2.5 本章小结 ....................................................................................................... 17

第三章 基于 JTAG 的仿真/调试部件的设计与实现 ....................................... 18

第 I 页
国防科学技术大学研究生院工程硕士学位论文

3.1 仿真/调试部件的概述 .................................................................................. 18


3.2 仿真/调试部件的介绍 .................................................................................. 19
3.2.1 ETAP 处理模块 ................................................................................. 20
3.2.2 TAP 控制器 ........................................................................................ 21
3.2.3 指令寄存器 JIR .................................................................................. 23
3.3 仿真/调试部件的功能 .................................................................................. 24
3.3.1 流水线控制 ........................................................................................ 24
3.3.2 资源访问 ............................................................................................ 26
3.3.3 事件统计 ............................................................................................ 30
3.4 功能验证 ....................................................................................................... 31
3.4.1 验证方法 ............................................................................................ 32
3.4.2 功能验证计划 .................................................................................... 32
3.4.3 验证结果分析 .................................................................................... 34
3.4.4 覆盖率分析 ........................................................................................ 38
3.5 逻辑综合 ....................................................................................................... 38
3.6 本章小结 ....................................................................................................... 39

第四章 仿真调试中软件断点的实现 ................................................................ 40


4.1 软件断点实现的基本原理 ........................................................................... 40
4.2 软件断点的处理 ........................................................................................... 40
4.2.2 软件断点的设置 ................................................................................ 40
4.2.3 软件断点的取消 ................................................................................ 42
4.2.4 软件断点的恢复 ................................................................................ 42
4.2.5 相关存储系统的一致性维护 ............................................................ 43
4.3 指令派发部件对软件断点的支持 ............................................................... 43
4.3.1 DP 对于 ET 读操作的支持 ............................................................... 43
4.3.2 DP 对于 ET 软件断点的支持 ........................................................... 43
4.3.3 DP 对软件断点的检测 ...................................................................... 45
4.3.4 DP 对软件断点的恢复 ...................................................................... 45
4.4 流水线中软件断点的生成 ........................................................................... 46
4.5 功能验证 ....................................................................................................... 47
4.5.1 软件断点的功能验证点 .................................................................... 47
4.5.2 软件断点的验证结果和分析 ............................................................ 47
4.6 本章小结 ....................................................................................................... 50

第 II 页
国防科学技术大学研究生院工程硕士学位论文

第五章 基于 PCIE 的仿真/调试部件的设计 .................................................... 51


5.1 M-DSP 仿真调试的需求分析 ...................................................................... 51
5.2 PCIE 与 ET 的通信协议 ............................................................................... 52
5.3 36 位数据访问机制 ...................................................................................... 53
5.4 DNACBuf 状态机 ......................................................................................... 54
5.4.1 DNACBuf 状态机的状态分析 .......................................................... 55
5.4.2 PCIE 模式下 ET 的仿真控制 ............................................................ 56
5.5 与 JTAG 的逻辑复用.................................................................................... 56
5.5.1 存储域模块 MD ................................................................................. 56
5.5.2 指令译码模块 IDEC .......................................................................... 58
5.5.3 仿真控制寄存器 ECR........................................................................ 60
5.6 验证与测试 ................................................................................................... 62
5.6.1 功能验证计划 .................................................................................... 62
5.6.2 验证结果分析 .................................................................................... 63
5.6.3 覆盖率分析 ........................................................................................ 65
5.7 本章小结 ....................................................................................................... 65

第六章 M-DSP 仿真调试的系统级验证环境 .................................................. 66


6.1 传统的 FPGA 原型验证环境 ...................................................................... 66
6.2 基于 PLI 接口的验证系统 ........................................................................... 67
6.2.1 Verilog PLI 接口简述 ........................................................................ 67
6.2.2 基于 PLI 验证系统的优势 ................................................................ 68
6.2.3 基于 PLI 的验证系统的结构 ............................................................ 69
6.3 基于 PLI 接口技术的验证模型 .................................................................. 70
6.3.1 共享内存区 ........................................................................................ 70
6.3.2 同步读写指针 .................................................................................... 71
6.3.3 M-DSP 仿真调试的系统级验证环境 ............................................... 72
6.4 多核加速模型 ............................................................................................... 72
6.4.1 设计原理 ............................................................................................ 73
6.4.2 队列类型复用 .................................................................................... 73
6.4.3 多核加速效率分析 .............................................................................. 73
6.5 M-DSP 仿真调试的系统级验证实践 .......................................................... 74
6.5.1 调试流水线 ........................................................................................ 74
6.5.2 可访问资源的读写 ............................................................................ 75
6.5.3 系统性能统计 .................................................................................... 76
第 III 页
国防科学技术大学研究生院工程硕士学位论文

6.5.4 软件断点和硬件断点 ........................................................................ 77


6.6 本章小结 ....................................................................................................... 79

第七章 论文总结及展望 .................................................................................... 80


7.1 论文总结 ....................................................................................................... 80
7.2 工作展望 ....................................................................................................... 81

致 谢 .................................................................................................................... 82

参考文献 ................................................................................................................ 84

作者在研究生阶段取得的学术成果 .................................................................... 88

第 IV 页
国防科学技术大学研究生院工程硕士学位论文

表 目 录

表 2.1 M-DSP 的指令编码域说明 ..................................................................... 10


表 3.1 ETAP 的子功能模块 ............................................................................... 21
表 3.2 JTAP 的状态编码 .................................................................................... 22
表 3.3 8 位操作码的作用 ................................................................................... 24
表 3.4 CD 的端口信号 ........................................................................................ 25
表 3.5 ET 内部 SPE 的保留空间编码................................................................ 27
表 3.6 ET 与 SPE 的接口信号............................................................................ 28
表 3.7 ET 与 DMA 的接口信号 ......................................................................... 28
表 3.8 ET 与配置总线的接口信号 .................................................................... 29
表 3.9 ET 性能统计的保留空间分配表 ............................................................ 31
表 3.10 ET 的事件统计列表 .............................................................................. 31
表 3.11 ET 的部件的验证功能点 ...................................................................... 33
表 3.12 ET 的部件的逻辑综合结果 .................................................................. 39
表 4.1 软件断点的功能验证计划描述 .............................................................. 47
表 4.2 软件断点验证的背景汇编激励 .............................................................. 48
表 4.3 32 位指令为软件断点的 ET 调试激励 .................................................. 48
表 4.4 16 位指令为软件断点的 ET 调试激励 .................................................. 49
表 5.1 ET 与 DNAC 的接口列表 ....................................................................... 53
表 5.2 ET 内部保留空间表 ................................................................................ 54
表 5.3 ET 流水线仿真控制的映射地址分配 .................................................... 56
表 5.4 IDEC 的输入信号 .................................................................................... 59
表 5.5 IDEC 的输出信号 .................................................................................... 59
表 5.6 ECR 的输入信号...................................................................................... 60
表 5.7 ECR 的输出信号...................................................................................... 61
表 5.8 ECR 执行码............................................................................................. 61
表 5.9 REVT 远程事件域编码 ........................................................................... 62
表 5.10 PCIE 的调试模式下的功能验证点描述............................................... 62

第 V 页
国防科学技术大学研究生院工程硕士学位论文

图 目 录

图 2.1 M-DSP 体系结构图 ................................................................................... 8


图 2.2 M-DSP 的内核结构图 ............................................................................... 9
图 2.3 指令格式编码域 ...................................................................................... 10
图 2.4 执行包的基本格式 .................................................................................. 11
图 2.5 执行包在指令包 IF_FP 中的分布 .......................................................... 12
图 2.6 M-DSP 指令流水线结构示意图 ............................................................. 13
图 2.7 M-DSP 取指段的流水线结构示意图 ..................................................... 13
图 2.8 指令派发部件 FD、DP 两站流水线结构图 .......................................... 14
图 2.9 IH_Flush 清空流水图 .............................................................................. 14
图 2.10 M-DSP 分支处理的指令流图 ............................................................... 15
图 3.1 ET 与各设备的通信 ................................................................................ 18
图 3.2 ET 内部结构 ............................................................................................ 19
图 3.3 ETAP 模块结构图 ................................................................................... 20
图 3.4 TAP 状态机图 .......................................................................................... 22
图 3.5 JIR 的指令寄存器 .................................................................................... 23
图 3.6 CD 模块结构图 ........................................................................................ 25
图 3.7 ET 资源访问的通信 ................................................................................ 27
图 3.8 ET 通过 DMA 的读操作 ......................................................................... 29
图 3.9 ET 通过 DMA 的写操作 ......................................................................... 29
图 3.10 ET 通过配置总线的通信 ...................................................................... 30
图 3.11 ET 读写 AM 空间 .................................................................................. 34
图 3.12 ET 读写 I2C 的配置空间 ...................................................................... 35
图 3.13 ET 读写基址寄存器 AR01 .................................................................... 35
图 3.14 HWBP 断点的验证波形图 .................................................................... 36
图 3.15 ET 控制流水线运行、单步的波形图 .................................................. 37
图 3.16 ET 的性能统计波形图 .......................................................................... 37
图 3.17 ET 覆盖率验证结果 .............................................................................. 38
图 4.1 ET 写 DP 的缓冲队列 ............................................................................. 44
图 4.2 ET 写 DP2 的指令派发窗口 ................................................................... 44
图 4.3 DP2 站软件断点的检测 .......................................................................... 45
图 4.4 DC2 站软件断点的恢复 .......................................................................... 45

第 VI 页
国防科学技术大学研究生院工程硕士学位论文

图 4.5 32 指令的软件断点设置与恢复操作 ..................................................... 46


图 4.6 16 指令的软件断点设置与恢复操作 ..................................................... 47
图 4.7 32 指令的软件断点波形 ......................................................................... 49
图 4.8 16 指令的软件断点波形 ......................................................................... 50
图 5.1 ET 内部模块图 ........................................................................................ 51
图 5.2 DNACBuf 的状态机状态转换流程图 .................................................... 55
图 5.3 MD 整体结构框图 ................................................................................... 57
图 5.4 IDEC 结构图 ............................................................................................ 59
图 5.5 仿真控制寄存器 ECR.............................................................................. 60
图 5.6 PCIE 调试控制流水线波形图................................................................. 63
图 5.7 PCIE 调试 36 位数据写操作波形图....................................................... 63
图 5.8 PCIE 调试 36 位数据读操作波形图....................................................... 64
图 5.9 DNACBuff 中的 FIFO 读写波形图 ........................................................ 64
图 5.10 覆盖率分析图 ........................................................................................ 65
图 6.1 FPGA 原型调试 ....................................................................................... 66
图 6.2 IDE 调试平台驱动函数........................................................................... 67
图 6.3 PLI 接口读写操作 ................................................................................... 68
图 6.4 基于 Verilog PLI 技术的新型系统级验证环境 ..................................... 69
图 6.5 基于 Verilog PLI 技术的验证模型原理图 ............................................. 70
图 6.6 进程间共享内存数据的通信图 .............................................................. 71
图 6.7 共享缓冲队列的结构划分图 .................................................................. 71
图 6.8 ET 控制流水线的 IDE 界面调试图 ........................................................ 74
图 6.9 ET 读写寄存器的的 IDE 界面调试图 .................................................... 75
图 6.10 ET 读写内存的调试界面图 .................................................................. 76
图 6.11 性能统计的调试界面图 ........................................................................ 77
图 6.12 软件断点与硬件断点操作的调试界面图 ............................................ 78

第 VII 页
国防科学技术大学研究生院工程硕士学位论文

摘 要

今天,DSP 技术的飞跃式发展给人们生活的数字信息化带来了蓬勃的发展空
间,大力促进了通信、计算机和消费类电子产品的数字化融合,DSP 技术还将结
合物联网在通信、电子商务、智能可穿戴设备、智能家居和智慧城市建设等多领
域起到重要作用。毫无疑问,DSP 技术在这个快速发展的移动互联网络时代里正
大放异彩。
M-DSP 是由国防科学技术大学计算机学院设计研制,具有自主知识产权的 32
位高性能浮点向量双核处理器。主频达到 1.1GHz,采用超长指令字(VLIW)的
结构,派发部件可同时并行发射十一条指令,采用 16/32 位可变长的 RISC 指令集,
具有高效的 14 级流水线结构。M-DSP 是针对 DSP 市场需求面向无线通信、视频
和图像处理而开发的高性能浮点向量处理器。
随着 DSP 芯片性能的不断提升,其设计越来越复杂、硬件规模越来越大,而
DSP 芯片的验证工作在设计过程中占的比重越来越大。在设计的过程中不可避免
的会出现一些 BUG 和错误,而这对芯片的设计来说是需要高度重视的,将会影响
整个芯片的开发进度。芯片的仿真/调试功能的地位变得越来越重要,这也给设计
人员提出了更高的要求,如何在尽量不影响芯片性能的前提下,支持仿真/调试功
能,是在对 DSP 芯片进行设计时需要特别考虑的关键技术。
因此, 本文主要针对 M-DSP 处理器中仿真/调试部件的设计与实现展开研究,
主要完成的设计工作和创新点有:
1、本文设计与实现了 M-DSP 的仿真/调试部件,有效支持基于 JTAG 平台的
调试工作。能够高效完成仿真/调试的三大任务,主要有:实现对流水线的精准控
制,芯片各资源的访问以及系统性能参数的统计等。
2、针对 M-DSP 中 16/32 位可变长 RISC 指令集,设计并优化了 M-DSP 处理
器指令派发部件的逻辑,实现了指令派发部件对于 ET 软件断点的硬件支持。
3、提出了一种基于 PCIE 仿真/调试部件的方案,通过和基于 JTAG 仿真/调试
部件的逻辑复用,实现了通过 PCIE 对 DSP 芯片进行仿真/调试的设计。
4、本文根据片内仿真/调试部件的特点,设计了一种基于 Verilog PLI 接口、
通过共享内存区连接集成开发环境(IDE)的 M-DSP 软硬件联合验证系统,能够
加快全芯片的仿真/调试工作。
5、通过将基于 NC_Sim 模拟验证的方法和基于 Verilog PLI 技术的新型软硬件
联合验证方法相结合,对仿真/调试部件功能的正确性进行了全面验证。

关键词:DSP;仿真调试;JTAG;软件断点;Verilog PLI 接口技术


第 i 页
国防科学技术大学研究生院工程硕士学位论文

ABSTRACT
Today,the leap- forward development of DSP brings booming room for digital
information embedded in people's life, and vigorously promote the digital fusion of
communication, computer and electronics products;the combination of DSP technology
and the internet of things will play a key role in communication, e-commerce,
multi-domain intelligent wearable devices, smart home and smart city construction.
Undoubtedly, DSP technology shines in this fast-growing mobile Internet era.
M-DSP is designed and developed by the School of Computer Science, National
University of Defense Technology, with independent intellectual property rights of 32
high-performance floating-point vector dual-core processors. Main frequency reaches
up to 1.1GHz, with very long instruction word (VLIW) structure,Dispatch unit can
simultaneously parallel transmit eleven instructions by using variable length 16/32 bit
RISC instruction set which is an efficient 14-stage pipeline structure.M-DSP is a
high-performance floating-point vector processor which is facing on wireless
communications, video and image processing , gearing to the needs of DSP market.
With the rising improvement of DSP chip, its design is more complex and larger in
terms of hardware scale. but the verification of DSP chips in the design process turns
into an increasingly larger proportion. In the design process, inevitably there will be
some BUG and error, which should attract high attention as it will affect the
development of the entire chip. people pay increasingly attention to the chip emulation /
debug functions, which also makes higher demands for designer. supporting
simulation / debugging functionality without impacting the chip performance requires
special consideration when designing.
Therefore, this research focuses on the designing and implementation of M-DSP
processor emulation / debug components. the main designing task and innovations are
as follows:
1. The paper designs and implements an in-chip emulation / debug components,
which can effectively support JTAG-based debugging platform. tasks of emulation /
debug are the precise control of pipeline, the access to each chip resource, and the
statistics for system performance parameters.
2. It designs and optimizes the logic of M-DSP processors dispatch unit, and
manages to achieve the hardware support of the dispatch unit for ET software
breakpoint for the 16/32 bit variable-length RISC instruction in M-DSP.
3. It presents a simulation-based PCIE / debugging components program. through
the logic reuse of the JTAG-based emulation / debug components, it achieves a DSP
emulation / debug design for PCIE or ARM chip.
4. Based on the characteristics of the on-chip emulation / debug components and

第 ii 页
国防科学技术大学研究生院工程硕士学位论文
Verilog PLI interface, it designs a verification system in the integration of M-DSP
software and hardware through the joint of shared memory area of in integrated
development environment (IDE) , effectively achieving the full-chip simulation /
debugging.
5. by combining NC_Sim simulation with the integration of hardware and software
based on the Verilog PLI technologies, it makes a comprehensive verification of the
accuracy of the simulator / test unit.

Key words: DSP; Simulation/Test; JTAG; Software breakpoints; Verilog PLI


interface technology

第 iii 页
国防科学技术大学研究生院工程硕士学位论文

第一章 绪论

今天,DSP 技术的跨越式发展为现代智能生活体验带来了蓬勃的发展空间,
在无线通信、面向个人智能终端、嵌入式数字控制应用以及消费电器等领域不断
在刷新着它的重要性。在未来的发展中,移动互联网络将结合物联网在通信、电
子商务、智能可穿戴设备、智能家居和智慧城市建设等多领域起到重要作用。而
推进这种智能化、多领域融合的动力就是本文的主角—数字信号处理器(Digital
signal Processor,DSP)。
今天,随着移动互联网络技术应用越来越广,几乎每个人的身上都能找到 DSP
芯片的影子,市场对 DSP 芯片性能的提出了越来越高的要求,促进了 DSP 技术的
快速发展,随着 DSP 技术的发展,又促进了各大新科技领域的爆发式发展。
M-DSP 这款 32 位高性能浮点向量双核处理器就是针对 DSP 市场需求面向无
线通信、视频和图像处理而开发的浮点向量 DSP。随着 DSP 芯片性能的不断提升,
其设计越来越复杂、硬件规模越来越大,这让芯片的仿真调试功能的地位变得越
来越重要,但是也给设计人员提出了更高的要求,如何在尽量不影响芯片整体性
能的前提下,支持仿真/调试功能,是在对 DSP 芯片进行设计时需要特别考虑的重
要技术问题。因此,本文将主要研究 M-DSP 中仿真/调试部件的设计与实现。

1.1 课题的研究背景和意义

1.1.1 DSP 芯片的主要特点

和通用处理器不同,DSP 作为数字信号处理器,它更关注的是对于比较单一
的事务处理,有很多加速计算的地方。
(1)哈佛结构和改进的哈佛结构。将程序和数据存储在不同的存储空间中,
对每个存储器进行独立编址以及支持独立访问[1]。因为具有程序总线和数据总线两
条总线,这样数据的吞吐率更快。
(2)流水线操作。采用流水线的形式,每条指令处于流水线的不同阶段,能
够并行处理多条指令,从而处理器的效率将更高[2]。
(3)设计有专用的硬件乘法器与乘加指令[3]。一次乘法和一次加法能够在一
个指令周期内完成。
(4)独立的 DMA 的总线及其控制器。拥有 DMA 部件后,不仅大大提升了
数据的传输效率,而且在多个 DSP 核协同处理的时候,DMA 可以成为各个 DSP
核之间进行数据传输的主要通道。

第 1 页
国防科学技术大学研究生院工程硕士学位论文

(5)众多的外设部件。设置较多的硬件 I/O 支持,并采用快速的中断处理和


DMA 机制来使数据的传输不影响或尽少的影响 DSP 的正常计算。
(6)具有特殊的分支跳转硬件结构。方便 DSP 算法去处理往往要花费大量的
时间反复执行的一部分循环程序。
(7)专门的指令集。DSP 为了加速计算,允许在单条指令中并行完成多个操
作。

1.1.2 高性能 DSP 的发展趋势

随着各种智能终端设备的普及和物联网的兴起,得益于当今科学技术的飞速
发展和人们对于生活智能化的需求,DSP 芯片技术开始蓬勃发展,未来数年内可
能将会影响我们生活中的点点滴滴。但目前 DSP 的发展仍然将围绕着性能、功耗、
价格这三个方面展开,而芯片开发人员要做的就是根据不同的需求找出这三个的
平衡点。总的来说,DSP 也跨越了一个又一个里程碑,它的性能在不断的攀升,
功能越来越多,处理速度和运算性能越来越和通用处理器相似,但单位面积的功
耗和价格却在下降。但是随着需求的不断走向多样化,DSP 面前的问题是处理能
力的更强,运算效率更高,功能更加丰富,功耗水平更低。所以,DSP 的发展趋
势有下面几个方向:
(1)主频更高,运算更快。DSP 的主频从以前几百兆赫兹到今天的几个 G/HZ,
随着各种超流水技术的应用,它的主频甚至将会更高,运算速度更快,指令的执
行效率越来越高,性能将得到直接的提升。
(2)向多核发展。特别是(Systems on Chip,SOC)技术的成熟,现在 DSP 甚
至发展到今天的 64 核 DSP,DSP 的核越来越多,这样能够处理的事务也更多,特
别是对于那些要求高速和高密度的数据信号处理[4]。
(3)DSP 的应用范围更广。现在小到智能穿戴设备,大到通信基站,都遍布
着各种类型的 DSP 的应用,它们无时无刻不在发挥着智能化,自动化的作用,改
变着我们的生活方式,这些便利都有 DSP 在幕后发挥着至关重要的作用。
(4)DSP 的功耗将越来越低。在新一代的消费类商品中,移动智能设备所占
的比重越来越大,而这些设备大都采用锂电池供电,为了使电池的续航能力更持
久,低功耗的应用将更为重视,而且目前的芯片低功耗技术也越来越成熟,如多
电压域设计,智能关断时钟等。
(5)DSP 将越来越小。随着工艺的不断发展,现在采用最新的工艺是 14nm,
这样在单位面积上能够集成的电路将更多,还有就是砷化镓、硅锗等新材料的使
用,未来的 DSP 芯片将可能做得更加小巧。
今天是个科技大爆炸的时代,而 DSP 芯片的不断发展,将渗透到各个领域当
第 2 页
国防科学技术大学研究生院工程硕士学位论文

中去,成为各大电子产品的核心,可以说,DSP 的发展已经带动整个电子行业的
不断进步。

1.1.3 DSP 技术的发展意义

目前,中国的 DSP 市场是全世界半导体市场中最大最为活跃的一块。在中国


这个快速蓬勃发展的市场中,越来越重视科技的自主创新,所以自主 DSP 芯片的
发展具有下面的特点:
(1) DSP 芯片的需求量一直持续保持较高的增长率,中国是发展潜力最大的市
场。
(2) 基本上与国际先进水平接轨。产品研发和相关技术已和世界主流水平基本
接轨,得到市场和行业的认可。
(3) 主流 DSP 处理器仍然被国外大公司如 TI、AGERE、ADI 等占领,关键技术
受到国外企业的制约。
(4) 微处理器技术起步较晚,自主研发微处理器的实力还有待进一步提升。
(5) DSP 的产业化道路还需要进一步加快进程。
据统计在 2013 年,中国的芯片进口规模将近 2322 亿美元,远远超过了石油。
芯片被形象的比作是国家的“工业粮食”,国家信息化发展的多个行业都离不开
它。但是我国芯片产业长期受制于人,超九成芯片需要来自进口,而且在关键领
域芯片的核心技术也被国外企业所控制。综上所述,自主“中国芯”的研发关系
到我国科技快速发展的关键。
目前,在自主设计研发高性能微处理器的领域,国防科学技术大学拥有一支
高水平的科研团队并积累了多年来宝贵的研发经验,是国内自主研发芯片队伍中
具有重要代表性的。2014 年 11 月 20 日,“天河二号”不负众望的在排行榜上再
次荣获冠军,这是第四次拿到世界超算冠军的称号,这是“中国芯”走向世界一
个重要的里程碑。而本论文中所讲到的 M-DSP,便是国防科学技术大学计算机学
院微电子所自主设计的 32 位高性能浮点向量双核处理器。M-DSP 达到了当前市场
上主流芯片的水平,对于我国芯片的自主化具有重要的意义,也为后续芯片的研
发进行了技术积累。

1.2 仿真/调试技术的研究

1.2.1 仿真/调试技术的概述

随着 VLSI 技术的进一步发展,芯片设计规模和硬件逻辑复杂度的不断增加,

第 3 页
国防科学技术大学研究生院工程硕士学位论文

验证 DSP 芯片的功能正确性在设计过程中占的比重越来越大,而 DSP 芯片的验证


工作在设计过程中占的时间成本越来越大[5] [6]。在设计芯片的时候,难免会出现一
些 BUG 和错误,而这在芯片的设计开发过程中是要高度重视的,甚至会拖累整个
芯片的开发进度。所以保证芯片验证工作的高效性和完备性成为微处理器设计过
程中的重头戏,因此仿真/调试技术的研究对于芯片的可测性具有重要的意义。
目前根据调试硬件在微处理器内的设计层次[7],主要分为以下三种:一是在线
仿真器(In Circuit Emulators,即 ICE)[8] [9];二是驻留调试监控程序(Debug Monitors)
[24]
;三是片上调试(On-Chip Debug,即 OCD)。本文设计中采用的就是基于片上
调试的方式[10] [11]。

1.2.2 片上调试技术的研究

通常基于片上调试技术的设计常见的有两种,一种为芯片后台运行的调试模
式(BDM)技术,第二种则是基于 JTAG 接口仿真/调试技术。
 后台调试模式(BDM)
BDM 技术是由 Freescale 开发的基于单线调试的技术,它只需要很少的 I/O 接
口。微处理器片内设计有进行 BDM 仿真调试的接口,并且拥有专门用于进行调试
的 X 指令,该指令便是调试开关,将激活 BDM 串口进行系统调试命令通信。在
目标芯片内部设计有 BDM 总线与 DSP 内核直接相连,在开发人员设置的执行位
置上,BDM 调试将目标代码用 X 调试指令代替,从而控制微处理器的仿真运行状
态。BDM 总线上的调试指令将控制 DSP 去读写它核内的体系结构寄存器、核外存
储器以及其它外设资源,并将获得的状态和结果信息传给调试工具,方便开发人
员调试目标芯片。与在线仿真器(ICE)相比较而言,BDM 是通过片内调试硬件实现
调试指令对处理器的调试,而没有其它那些外部存储器和特定接口的数据线,是
一种方便和高效的片上调试模式。
 基于 JTAG 的仿真/调试技术[12] [13]
JTAG 仿真技术最开始是被用于对芯片的边界进行扫描测试的,但因其在芯片
测试过程中使用方便和灵活,现在被广泛用在片上调试技术中。基于 JTAG 的调
试技术则利用 JTAG 仿真器将 IDE 主机系统和 DSP 芯片实现通信,调试芯片内设
计有相关调试的硬件逻辑,从而完成对芯片的调试工作。基于 JTAG 的片上调试
技术包含有 DSP 系统运行和系统调试两种工作状态。在系统运行状态下,调试部
件不对目标芯片调试操作,芯片处于正常运行的状态,不受 ET 的影响;在系统调
试模式下,目标芯片处于流水线暂停状态,接收 JTAG 调试接口发来的仿真/调试
指令,从而读写目标芯片的体系结构寄存器、内存以及外设等资源,控制流水线
运行、单步和暂停等。基于 JTAG 的片上调试系统占用 DSP 芯片的硬件资源很少,
第 4 页
国防科学技术大学研究生院工程硕士学位论文

共用边界扫描测试的接口,使用较少的 I/O 接口,仿真/调试操作方便、调试效率


较高以及用户体验较好,所以使用比较广泛[14] [15] [16] [17]。

1.2.3 M-DSP 的仿真/调试机制

仿真/调试部件(ET)是进行 DSP 仿真/调试的片上硬件设计单元,它在 DSP


内部设计专用的 ET硬件逻辑,成为一个单独的调试部件[18] [19]。设计有标准的 JTAG
接口,从而能够通过 JTAG 仿真器与 IDE 调试主机进行通信,ET 通过接收到 IDE
调试主机的调试命令完成对应的 DSP 仿真调试工作。针对于 M-DSP 这款高性能浮
点向量双核处理器,要求设计的仿真/调试部件在全芯片的仿真/调试工作中,能完
成的主要操作有:
 对于片外接口,实现与标准接口的 JTAG 仿真器进行通信。能够通过 JTAG
接口,实现 IDE 调试主机对 DSP 芯片 ET 部件的访问,完成调试与验证
工作。
 实现基于 PCIE 的仿真/调试模式。在系统时钟下,通过 ARM 或 PCIE 实现
芯片的调试工作,能为 DSP 芯片仿真/调试增加一种方式的同时,也能加
快调试的效率。
 流水线控制。主要包括 DSP 基本的系统复位、流水线暂停、流水线运行和
单步前进等,特别增加了 SWBP 断点和 HWBP 断点控制,从而实现对流
水线的精准和有效的控制。
 资源访问。ET 部件通过使用 ET 内部的保留空间进行地址映射、DMA 部
件和配置总线,实现对芯片整个存储空间和 DSP 内核的体系结构寄存器
以及外设的读写访问。
 事件统计。人性化的用户体验,主要是一些程序员关心的,表示系统程序
运行性能的参数统计,如 L1P 命中的次数、程序有效执行周期等等,从而
对开发人员编写的程序进行调试和优化工作提供了帮助。

1.3 课题的研究内容

本文主要是以国防科大计算机学院自主研发的 32 位高性能浮点向量双核处理
器 M-DSP 作为课题背景,设计并实现了基于 JTAG 和 PCIE 的仿真/调试部件以及
搭建了全新的 M-DSP 全芯片软硬件联合的系统级验证环境。主要的研究内容如下
所示:
 介绍了课题的研究背景,分析目前高性能 DSP 芯片主要特点和发展方向,
强调了仿真/调试部件设计的研究意义;
第 5 页
国防科学技术大学研究生院工程硕士学位论文

 介绍了 M-DSP 处理器的体系结构,简单分析了内核的结构特征以及指令


的编码形式和流水线的设计结构。
 设计并实现了 M-DSP 的仿真/调试部件,能够高效的完成系统调试任务;
 提出了一种基于 PCIE 的仿真/调试部件的方案,通过和基于 JTAG 的仿真/
调试系统的逻辑复用,实现了通过 PCIE 对 DSP 芯片进行调试的设计。
 针对 M-DSP 处理器的指令派发部件特点,实现了 DP 对于软件断点(又称
SWBP 断点)的硬件逻辑设计。
 分析了基于 FPGA 原型验证模型和基于 Verilog PLI 接口技术的新型软硬
件联合的系统级验证系统的优缺点;
 设计了一种基于 Verilog PLI 接口、通过共享缓冲区与 ET 通信,连接 IDE
调试界面的 M-DSP 新型软硬件联合验证的系统级验证环境;
 通过将基于 NC_Sim 模拟的方法和基于 Verilog PLI 技术的新型软硬件联合
验证的方法相结合,对仿真/调试部件的功能正确性进行了全面的验证。
通过一系列的功能验证和逻辑综合分析,本文设计的 ET 部件功能正确,达到
设计要求;通过基于模拟仿真(NC_Sim)的方法和基于 PLI 接口技术的新型验证
的方法完成了 DSP 芯片仿真/调试时的流水线控制、资源访问和事件统计等功能,
达到了 M-DSP 课题组的设计目标和研究任务,在保证了 M-DSP 系统性能的同时,
高效的完成了对全芯片调试与验证工作。

1.4 课题的组织结构

本文以 M-DSP 为背景,主要分析仿真/调试部件的设计与实现,并完成基于


PLI 接口的仿真/调试的系统级验证环境,从而实现对 M-DSP 全芯片的调试验证。
全文可分为七章。
第一章是绪论。主要是说明本文的研究背景,包括 DSP 芯片的发展史和高性
能 DSP 芯片的特点;并指出本文课题的设计内容,简单分析了仿真/调试部件的特
征;最后说明了本课题的研究意义。
第二章是 M-DSP 的体系结构概要和内核特征分析。简要介绍了 M-DSP 的体
系结构,分析了流水线的设计结构,并提出了仿真/调试部件的设计方案。
第三章是 M-DSP 仿真/调试部件的设计与实现过程。对基于 JTAG 标准接口的
ET 部件设计思路进行分析,并详细介绍了 ET 部件实现流水线的精确控制、片内
和片外的资源访问和系统性能统计的三大功能。最后验证 ET 部件的功能正确性。
第四章是流水线调试仿真中 SWBP 断点的实现。首先分析了 SWBP 断点实现
的基本原理,包括 SWBP 断点的设置和恢复等;然后分析了 DP 对于 SWBP 断点
第 6 页
国防科学技术大学研究生院工程硕士学位论文

的硬件逻辑支持;最后验证了 SWBP 断点的功能正确性。


第五章是基于 PCIE 的 ET 部件设计。提出了一种基于 PCIE 和 ARM 的仿真/
调试部件的设计方案。通过和基于 JTAG 的仿真/调试部件的逻辑复用,实现了通
过 PCIE 进行 DSP 芯片仿真/调试的设计,在章节最后对这种 PCIE 模式下的仿真/
调试进行了功能验证。
第六章 M-DSP 仿真调试平台的新型软硬件联合的系统级验证环境。介绍了传
统的 FPGA 原型验证环境的不足之处,分析基于 Verilog PLI 接口验证系统的优势,
从而提出了一种新型的基于 PLI 接口技术的软硬件联合验证模型,并利用设计的
新型 M-DSP 仿真调试平台进行了系统级验证实践。
第七章论文总结及展望。主要是对 M-DSP 的 ET 部件设计总结和对以后设计
之路的展望。
本文结尾处是个人致谢、本课题研究过程中的参考文献以及作者在研究生学
习期间发表的学术论文。

第 7 页
国防科学技术大学研究生院工程硕士学位论文

第二章 M-DSP 的体系结构

对于 M-DSP 的仿真/调试(Emulation/Test,ET)部件的设计,首先得对 M-DSP


的体系结构和 指令流水线 特征有了 充分认识 的前提下进 行。本章 将简要分析
M-DSP 的体系结构,分析系统流水线的设计结构,并以此设计并实现符合 M-DSP
结构特征的仿真/调试部件。

2.1 M-DSP 的体系结构概要

2.1.1 M-DSP 的总体结构

M-DSP 是由国防科大计算机学院设计研制的 32 位高性能浮点向量双核处理


器。主频达到 1.1GHz,采用 VLIW 结构,派发部件可同时并行发射十一条指令到
各个执行部件,采用经过针对 M-DSP 特征优化的 16/32 位可变长 RISC 指令集,
具有高效的 14 级流水线结构。M-DSP 是针对 DSP 市场需求面向无线通信、视频
和图像处理而开发的高性能浮点向量处理器。
M-DSP 全局地址空间为 36 位,拥有 64GB 的超大存储空间,其中 DDR 大小
为 32GB,还包括 768MB 的共享外设配置地址空间、256MB 的外设存储空间、
512MB 的 DSP 核内存储映射地址空间和 512MB 的 ARM 核内存储映射地址空间。
具有 1 个 DDR3 接口(最高支持 1600MT/s),1 个 PCIE2.0 DM(根节点/端设备
可静态配置)接口(16 通道,5Gbps/通道),2 个 SRIO 接口(4 通道,6.125Gbps/
通道),SPI、I2C 和 GPIO 接口各 1 个。
DSN0 DSN1 NodeA NodeB
I2c、
GPIO、
UART、PWM
SPI
core core SRIOB
PCIE GMAC
ARM
SRIOA
同 同 同 同
NAC0 步 NAC1 步 NACA 步 NACB 步

环形互连
SGC0 SGC1
DDR3 MCU

主设备 从设备

图 2.1 M-DSP 体系结构图


如上图 2.1 所示,M-DSP 为双核 DSP 结构,包含 2 个 DSP 核节点 DSN0 和
DSN1、2 个 IO 节点 NodeA 和 NodeB、4 个核间同步单元 SYNC0~SYNC3、全局
Cache、1 个 MCU 及多个 I/O 设备。

第 8 页
国防科学技术大学研究生院工程硕士学位论文

为了向下兼容,M-DSP 将内核地址空间和共享外设地址空间挪到 4GB 空间以


下,以便 32 位地址能够直接访问;且所有地址相关的寄存器(一般由两个寄存器,
分别为 4 和 32 位构成)高 4 位在芯片复位后默认值为 4’h8,以便程序员在仅用 32
位地址时也能够发出正常的访问。

2.1.2 M-DSP 的内核结构

M-DSP 为双核处理器,内部包含有 2 个 MX 内核,两个 MX 核是同构的,所


以在下面的设计中只针对单核进行。如图 2.2 所示,是 M-DSP 的内核结构,各个
主要部件分布如图所示。
写通路
指令派发 网络
本地
混合
SPU 8B 128B
VPU AM
指令 SVR Shuffle & Reduction 256B 读通路
SPE 运算阵列 VMC 网络
流控
取指 256B广播 256B 本地
单元 SM 存储阵列 混合
SMC
L1P L1D
ET DMA
配置通路
128B 网络
本地
混合
L1D-Flush通道

图 2.2 M-DSP 的内核结构图

M-DSP 的内核包含有片内一级程序缓存单元(L1P)、取指令单元(Fetch)、
指令派发部件(DP)、向量处理单元(VPU)和标量处理单元(SPU)、向量访
存单元(AM)和标量访存单元(SM)、标量和向量通用寄存器文件、DMA 控制
器、仿真/调试部件(ET)及各个外设资源[19]。
(1)一级程序 Cache(L1P):L1P 根据将来自取指部件和 DP 部件的取指令
请求,会向 DNAC 发出 2 次连续的读外存请求,并将接收到的 2 个 256 bit 指令包
合并为 512bit 的取指包发送给 Fetch 或 DP。
(2)取指部件(Fetch):根据 PG 模块给的取指包地址,包括顺序执行取指
包地址、分支跳转取指包地址等,然后获得对应取指包数据。
(3)指令派发部件(DP):DP 将接收到指令包放到 2 个 1024bit 的缓冲池里,
根据指令窗口中指令的并行位以及长度位信息,选择将要派发的执行包,并按照
DP 指令译码结果发送至对应的执行部件。
(4)标量处理单元(SPU):包括指令流控、SPE 以及 SM。其中,指令流
控单元包括分支、中断/异常控制等,用于程序流控制。
第 9 页
国防科学技术大学研究生院工程硕士学位论文

(5)标量访存单元(SM):用于实现对各种标量数据的访存控制。
(6)向量处理单元(VPU):它主要由 16 个同构的 VPE 部件和混洗/归约部
件组成。
(7)阵列存储器(AM):AM 是片上的阵列存储器,可以用于向量浮点运
算,能够实现 16 路 SIMD 宽度的向量数据高效的读写访问。
(8)DMA 控制器:DMA 部件作为直接存储器访问部件,能够实现对数据的
高效搬移,完成对各种存储资源的访问。
(9)仿真/调试部件(ET):接收来自 ARM、PCIE 或者 JTAG 仿真器的调试
命令,完成对 DSP 芯片内核进行仿真/调试工作。

2.2 M-DSP 的指令集

M-DSP 采用 VLIW 结构,派发部件可同时并行发射十一条指令到各个执行部


件,采用经过针对 M-DSP 体系结构优化的 16/32 位可变长 RISC 指令集[20],具有
高效的 14 级流水线结构,支持 16 位/32 位指令进行混合并行派发。

2.2.1 M-DSP 的指令格式

在 M-DSP 指令集中的指令长度有 32 位和 16 位两种,16/32 位可变长指令的


使用,能够有效的节约存储空间,提升指令的取指效率,其中 32 位指令指令格式
编码域如下图 2.3 所示。

3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
Reg Z xxxx ST P
图 2.3 指令格式编码域

在指令编码中,第 0 位是指令的并行位标志,为 1 的时候说明相邻两条指令


将并行派发;指令编码第 1、2 位是指令类型标识,DP 通过它将对指令类型进行
判断,从而区分出 16 位和 32 位指令,具体编码细节如表 2.1 所示。
表 2.1 M-DSP 的指令编码域说明
标识 位宽 意义 编码/值
00:无条件
01:寄存器 0
Reg 2 条件寄存器编号
10:寄存器 1
11:寄存器 2

第 10 页
国防科学技术大学研究生院工程硕士学位论文
0:当条件寄存器为非 0 执行
Z 1 条件判断
1:当条件寄存器为 0 执行
ST 2 指令类型 11:16 位指令;其它为 32 位指令
P 1 并行标志位 0:两条指令不并行派发
1:两条指令将并行派发
注:当{Reg, Z}为 001 时,表示无条件操作;当{Reg, Z}为 000 时,是本文后面将要介绍
的软件断点标志位。

2.2.2 指令包及执行包的结构

M-DSP 的取指单元按照指控部件的控制,从片外存储器中取出 512bit 的指令


包 IF_FP 给派发部件。那些连续存放的并且可以并行派发的多条指令组成一个指
令执行包,在执行包中的指令既可以是 16 位指令也可以是 32 位的指令,由于执
行部件有限,派发部件最多支持十一条指令的同时派发。指令长度是通过指令编
码的第 2 位与第 1 位来确定的,当为 2’b11 时,说明该条指令是 16 位长度,否则
为 32 位长度[21]。
如图 2.4 所示,指令包 IF_FP 内至少有 1 个以上的指令执行包,相邻执行包之
间无气泡,指令的并行标志位决定了执行包的大小。指令编码中的第 0 位 P 代表
并行标志位,在汇编程序中在指令前加“|”来表示:P 为 0 时,说明该指令与上
一指令不在同一个指令执行包中;P 为 1 时,代表该指令与上一指令在同一个指令
执行包中。
L L 0 L L P „„ L L P
指令1 指令2 指令n
图 2.4 执行包的基本格式

一个指令执行包里的指令按 32bit 对齐,主要分为标量、向量两大类指令。在


编译器的参与下,一个执行包中所有 32 位指令将分布在执行包的前面部分,而 16
位指令被分配在后面部分。M-DSP 内核中设计有 11 个执行部件,其中向量执行部
件有 6 个,标量执行部件有 5 个,所以支持十一条并行指令的同时执行。

第 11 页
国防科学技术大学研究生院工程硕士学位论文
32位

inst0(L16) 16bit 执行包0


inst1(L16) inst0(H16)
inst2(16) inst1(H16) 执行包1
inst4(16) inst3(16)
inst0(32)
inst1(32)
执行包2
inst2(32)
inst0(L16) inst3(16)
inst1(L16) inst0(H16)
inst2(L16) inst1(H16)
执行包3
执行包4 inst0(16) inst2(H16)
inst0(16) inst0(16) 执行包5
执行包6 inst0(32)
inst1(32)
inst2(32) 执行包7
inst3(32)

图 2.5 执行包在指令包 IF_FP 中的分布


如上图 2.5 所示,说明了不同的执行包在指令包 IF_FP 中的分布状况,其中,
16 表示为 16 位指令,32 表示为 32 位指令。

2.3 M-DSP 的指令流水线设计

流水线技术是用来提高微处理器的系统吞吐率的一种核心技术,能够有效的
提升 DSP 的性能。系统的吞吐率,通过 DSP 单位时间内完成的指令数目来表征,
它从一定程度上反映处了 DSP 的性能水平。系统处理一条指令的时间大小称为“指
令周期”,将指令周期所需要的处理过程细分为一个个子过程的序列,这些子过
程由流水线的各个不同流水段来执行。要有效合理地进行这种划分,设计中需要
考虑下面三个方面:
(1)一致的运算分量,在进行量化流水线时,要尽量减小内部碎片。
(2)重复的运算,流水线应能够支持所有的指令类型,同时尽量减少每种指
令类型的无效或空闲的机器周期。
(3)独立的运算,指令流水线必须要有一套内部机制,用来检测指令间发生
的相关并保证指令相关不会导致错误,从而减小流水线停顿[22]。

2.3.1 M-DSP 的基本指令流水线

M-DSP 可同时并行派发十一条指令,具有高效的 14 级流水线结构[23],且支持


16 位/32 位标量/向量指令混合并行发射,从而明显提升了 DSP 的指令执行效率。
其指令流水线根据完成任务不同,可以分为 Fetch 部分,DP 部分,DC 部分,Ex
部分四个阶段。如下图 2.6 所示,为了获得更高的取指效率和吞吐率,指令取指

第 12 页
国防科学技术大学研究生院工程硕士学位论文

部分又可以细分为三站,分别是取指地址生成站 PG、指令包等待站 PW、指令包


获取站 IF;指令派发部分细分为 FD 站和 DP 站,完成指令的派发任务;指令译码
部分细分为译码 DC1 站和译码 DC2 站,由各个功能部件完成译码工作;指令执行
部分按照各个功能部件和指令执行周期的不同,执行过程分为一站到多站不等,
单拍指令能在一拍内完成,而多拍指令则需要更长的执行周期。
取指 派发 译码 执行

PG PW IF FD DP DC1 DC2 E1 E2 E3 E4 E5 E6 E7

图 2.6 M-DSP 指令流水线结构示意图

(1)如下图 2.7 所示,取指部分在指令流水线中主要完成的任务是根据 PG


站产生下一个需要取指的指令包地址(自加 ox40 的顺序取指地址,分支目标取指
地址和中断、异常服务子程序取指地址),并将取指请求信息发给 L1P,L1P 发出
读片外程序存储器的请求,将接收到的两个连续的 256bit 指令包拼接成一个 512bit
的指令包返回给指令等待 PW 站,然后 IF 站又马上将获取的指令包 IF_FP 发给 DP
站,进行下一步的指令派发工作。
顺序地址
自加0x40
异常地址
地址产生控制
中断地址
分支地址 PG PW IF 指令派发控制 DP
全局控制
取指包有效及请求
ET

IF Cache访问 DP Cache访问

L1P

图 2.7 M-DSP 取指段的流水线结构示意图

(2)指令派发部分在流水线中共占用两站,分为 FD 站和 DP 站。在 FD 站中,


主要负责将来自取指部件 IF 和 L1P 的指令包 IF_FP[511:0]按照上一次的派发情况
进行正确的移位,生成新的指令缓冲队列保存在派发缓冲池中,并完成对处于指
令派发窗口中的指令进行并行标志位分析;在 DP 站中,则主要是将位于指令派发
窗口中的执行包派发到各个执行部件中去。如下图 2.8 所示,为指令派发部件 FD
站和 DP 站流水线结构图。
ET 在 DP 中的操作主要是进行 SWBP 断点的设置、取消和恢复等操作,包括
对指令缓冲池和派发窗口中的指令的读写操作以及软断点信号的检测等。

第 13 页
国防科学技术大学研究生院工程硕士学位论文
FD DP

令 软件断点

顺序取指包 发
窗 指令

内 指 指令
分支取指包 双
缓 令
冲 派 … 派

L1P取指包


槽 指令
DP 内部缓冲包
指令

图 2.8 指令派发部件 FD、DP 两站流水线结构图

(3)译码部分共占用 DC1 和 DC2 两站流水线。译码站的作用主要是完成从


派发部件过来的指令进行进一步的指令域分析操作,负责指令编码信息的解析工
作,包括指令的条件执行信息、对应执行单元的选择、各操作数的选择等等,完
成执行站的准备工作。本文设计的仿真/调试部件在 DC1 和 DC2 站的操作主要是
HWBP 断点和 SWBP 断点。
(4)执行站 EX 根据译码单元准备好的数据和指定的操作,完成对应运算工
作,执行阶段按照各个功能部件和指令执行周期的不同,执行过程各有不同,分
为 E1 到 E7 站不等。

2.3.2 流水线的阻塞与清空

在 M-DSP 的中断和异常处理设计过程中,考虑到数据的一致性,所以采用了
清空各个流水站的处理机制。如图 2.9 所示,在指控部件收到 IH_Flush 后,将清
空 IF 站、DP 站、DC1 站、DC2 站的数据,而其它执行部件在收到 IH_Flush 后,
将清空 DC1 站、DC2 站的有效信号。
DP DC E1 E2 E3 E4

IH_Flush = 0 N A

N+1 B A

N+2 C B A

N+3 D C B A

IH_Flush = 0 N+4 E D C B A

IH_Flush = 1 N+5 F E D C B

IH_Flush = 1 N+6 C B

IH_Flush = 1 N+7 A

图 2.9 IH_Flush 清空流水图


ET 在对于中断处理和异常处理的操作主要是对其各个配置寄存器(如 IER、
第 14 页
国防科学技术大学研究生院工程硕士学位论文

ISTP、IRR 等)的读写访问,还有就是 IH_Flush 作为 ET 性能统计的输入信号,


用于计算中断发生有效的次数。

2.3.3 M-DSP 的分支延迟槽

M-DSP 中对跳转指令的处理采用了与流水线深度相关的 6 拍延迟槽技术,即


无论跳转指令是否跳转成功,跳转指令后面都会正常执行六条指令。由于系统存
在一定的指令流水线深度,对分支指令是否有效的判断与取指单元的分支目标地
址计算处在指令流水线的不同的位置,所以本文对于分支的处理采用了与流水线
深度相关的 6 拍延迟槽技术。而且 DSP 所处理事务是比较简单和有序的,所以不
需要采用如分支预测等较复杂的分支处理技术,利用简单的分支延迟槽技术,能
有效的减小 DSP 面积、提升 DSP 效率。在编译器的参与下,能够保证分支处理效
率的同时,有效地降低了 DSP 设计的复杂度和功耗等。
PG PW IF FD DP DC1 DC2 E1

N G F E D C B A SBR

N+1 G F E D C B A

N+2 G F E D C B

N+3 G F E D C

N+4 G F E D

N+5 G F E

N+6 G F

N+7 G

图 2.10 M-DSP 分支处理的指令流图


如图 2.10 所示,在 N 时刻 E1 站正在执行的为分支指令 SBR,分支指令有效
且流控部件将分支目标地址(G 指令所在的程序 PC 值)送入到程序地址产生 PG
站进行取指工作。由于 M-DSP 采用与指令流水线深度相关的 6 拍延迟槽技术,此
后,需经过六个时钟周期,依次执行 A、B、C、D、E、F 指令后,在 N+7 时刻,
该分支目标指令 G 进入到执行 E1 站。
仿真/调试部件对于流控单元的操作有:对其分支寄存器 BR_Reg 的读写访问、
空操作 NOP 的统计以及 SWBP 断点的设置和恢复等。特别需要注意的是,对于
16 位指令的软件断点设置,采用的是一条分支 X 指令代替原指令。

第 15 页
国防科学技术大学研究生院工程硕士学位论文

2.4 M-DSP 的仿真/调试结构

2.4.1 仿真/调试的基本准则

微处理器仿真/调试技术是将专用的调试硬件逻辑嵌入微处理器里面,并且可
以实现处理器的工作状态和调试状态的任意转换,为设计人员提供灵活的操作接
口,能够高效的完成芯片的调试工作。片上仿真/调试的设计应遵循“海森伯格”准
则,也被叫做“非侵入性设计”准则[24]。“海森伯格”准则规定了微处理器 ET 部
件的硬件逻辑应该独立工作,而不会在调试过程中影响甚至破坏到微处理器的运
行现场状态,保证处理器能在调试模式下的正常执行任务,且程序的运行过程也
不会被非人为的改变,程序运行中保存的各种有用数据信息不会丢失。“海森伯格”
准则也是保证芯片调试正确的基本原则。
片上仿真/调试部件的设计需要考虑的问题是:一是 ET 部件能够方便有效的
对 DSP 的工作状态进行控制;其二 ET 部件能够有效的对 DSP 系统的各个状态进
行实时观测;三是 ET 部件能够对 DSP 的系统资源进行读写访问操作。

2.4.2 基于 JTAG 的仿真/调试方案

JTAG(Joint Test Action Group,联合测试行动小组)是一种通用的国际标准


测试协议(IEEE 1149.1),主要是用于芯片内部硬件的测试。目前大多数的主流
芯片和器件都兼容标准 JTAG 协议,标准的 JTAG 仿真器总共只有 4 个接口:TMS、
TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出。采用符合 JTAG
标准的 TAP 控制器,它是一个同步的有限状态机,响应 TMS 和 TCK 信号的变化,
将串行输入信号进行对应的仿真控制。串行的输入信号经仿真/调试的指令寄存器
JIR 传给 ET 的各个对应模块,执行对应的调试操作。详细介绍见第三章。

2.4.3 基于 PCIE 的仿真/调试方案

为了提升芯片调试的灵活度和效率,本设计将增加 ARM 或 PCIE 对芯片的调


试功能,以满足用户更广泛的调试需求。YHFT M-DSP 基于 PCIE 的仿真/调试实
现的功能和 JTAG 相似,在系统时钟下,通过 ARM 或 PCIE 实现芯片的调试工作,
能为 DSP 芯片仿真/调试增加一种方式的同时,也能加快调试的效率。在这种调试
模式下,PCIE 发出的请求经过 DNAC 对 ET 的 CIR 寄存器进行配置,ET 接收来
自 PCIE 的并行输入信号后,利用 DNACBuf 状态机的控制,更新内部的数据寄存
器 CIR_Data,经过调试指令解析译码等操作,通过和 JTAG 模式下的硬件逻辑复
第 16 页
国防科学技术大学研究生院工程硕士学位论文

用,完成对 DSP 仿真/调试工作。


所以在基于 PCIE 的仿真/调试设计中,本文需要特别考虑的是 DNAC 对 ET
的输入信号的状态机设计和 ET 对于 36 位数据读写的处理以及和 JTAG 模式下的
硬件逻辑复用的特别考虑。详细介绍见第五章。

2.5 本章小结

本章主要是以 M-DSP 处理器的体系结构为出发点,对设计的这款 32 位高性


能浮点向量双核处理器的体系结构进行了介绍,并分析 M-DSP 的指令集和指令流
水线的特征。以体系结构的特点为依据,流水线的结构为考量,提出了本课题中
对仿真/调试部件设计内容和仿真/调试部件的主要功能等。

第 17 页
国防科学技术大学研究生院工程硕士学位论文

第三章 基于 JTAG 的仿真/调试部件的设计与实现

JTAG 技术最开始是被用在芯片边界扫描测试之中,但设计者们发现其具有方
便灵活的特点,于是现在被广泛用于芯片的调试技术中。基于 JTAG 接口的芯片
仿真/调试系统是 IDE 软件集成调试环境利用标准 JTAG 仿真器同 DSP 芯片进行通
信,目标调试芯片内设计有相关 ET 硬件逻辑,ET 根据接收到的调试命令完成对
应的调试任务。本章主要针对标准 JTAG 接口对 M-DSP 片内仿真/调试部件进行设
计和实现。

3.1 仿真/调试部件的概述

M-DSP 设计中的仿真/调试部件(Emulation/Test,ET)负责接收来自 JTAG 仿


真器、ARM 和 PCIE 的调试命令,并根据接收到的调试命令完成对目标 DSP 芯片
对应的调试任务[25] [26] [27]
。标准的 JTAG 总共只有 4 个接口,分别是:模式选择
TMS、时钟 TCK、数据输入 TDI 和数据输出 TDO。来自 JTAG 仿真器串行的输入
信号经仿真/调试的指令寄存器 JIR 传给 ET 的各个对应的功能模块,完成对应的调
试操作[45]。基本框架如图 3.1 所示:
TDI

TMS
DMA AM 等

JTAG TCK

TRST ET
TDO
外设
配置寄 DSP_ CORE
配置总
存器
线控制
JTAG 调试模式

CPU 调试模式

共享调试通道
NAC

图 3.1 ET 与各设备的通信
如上图所示:M-DSP 中,有两种调试模式:JTAG 模式以及 ARM 和 PCIE 模
式。
(a)JTAG 调试模式下,ET 接收来自 JTAG 仿真器串行输入的仿真/调试信号,
经过一系列操作,完成对 DSP 芯片相应仿真/调试操作:包括控制流水线的运行、
单步和暂停等,读写访问 DSP 的体系结构寄存器以及系统存储资源等,统计 DSP
运行中的各个性能参数等[33]。
(b)PCIE 或 ARM 调试模式下,ET 接收来自 ARM 或 PCIE 控制器的并行输

第 18 页
国防科学技术大学研究生院工程硕士学位论文

入信号,PCIE 发出的请求经过 DNAC 对 ET 的 CIR 寄存器进行配置,ET 接收来


自 PCIE 的并行输入信号后,利用 DNACBuf 状态机的控制,更新内部的数据寄存
器 CIR_Data 数据,经过调试指令解析和译码等操作,通过和 JTAG 模式下的硬件
逻辑复用,完成对 DSP 仿真/调试工作。该模式将在第五章中进行详细的设计说明。
在上述任何一种调试平台下,要求 ET 均可以完成系统的三大仿真调试功能:
资源访问、流水控制和性能统计。
 资源访问:读写访问 DSP 的体系结构寄存器如标量寄存器 R0、向量寄存器
VR0 等,进行系统存储资源的访问如 DDR 空间、SPI 空间等,并对外设配置
寄存器的读写访问如 Timer 的配置等。
 流水控制:包括基本的流水线复位、停止、运行和单步,软件断点,硬件断点。
 事件统计:统计 DSP 运行中的各个性能参数,方便程序开发人员对应用程序
的观测和优化等,如 DP 发出停顿的持续周期、中断有效次数、分支命中次数
等。

3.2 仿真/调试部件的介绍

本文设计中基于标准 JTAG 接口的 ET 部件结构,如图 3.2 所示,包括一个 ET


顶层模块,五个大的子模块:ETAP(Emulation/Test Access Port)仿真/测试访问
端口,控制域 CD(Control Domain),分析域 AD(Analysis Domain),存储域
MD(Memory Domain),PCIE 访问接口 CDAP(CPU domain access port)。
ET 仿真/测试部件
CLK域 配
JTAG TCK域


TDO 线
MD存储域
DMA

硬件断点及
ETAP AD分析域
TDI 事件统计

流水线控制
TMS CD控制域
TCK DSP_CORE
TRST CDAP
控制域访问端口

CLK域

CPU访问状态机NACS

NAC

图 3.2 ET 内部结构
其中,ETAP 是 JTAG 仿真器和调试芯片之间通信的接口控制模块,JTAG 调
第 19 页
国防科学技术大学研究生院工程硕士学位论文

试模式下 ET 的核心控制模块,将在后面详细其设计。控制模块 CD 负责控制 DSP


流水线运行,全局控制信号 ET_Stall 由它生成,分析域 AD 负责统计 DSP 系统运
行性能参数以及硬件断点的处理,存储域 MD 负责生成对存储空间的访问的读写
信号,CDAP 负责控制模块 CD 和分析模块 AD 的连接并产生 PCIE 相关的仿真控
制信号。

3.2.1 ETAP 处理模块

ETAP 是 ET 的核心控制部件,用来将 JTAG 的串行输入信号转化为 ET 内部


的指令,其具体的功能包括:
(1)提供和 JTAG 标准兼容的 JTAG 状态机[28];
(2)提供和 JTAG 标准兼容的串行扫描通信;
(3)存储空间访问控制机制(通过 IDEC);
(4)功能测试码的上载、执行和调试(通过 JIR) ;
(5)支持边界扫描;
TCK

数据通路选择信号
TDO 仿真多路选择器
EMUX
TCK UCK&TCK
IDEC_DIR_SEL
DIR_TDO

器件标识寄存器
IDEC_ BYPASS_SEL
DIR IDEC_ SCTR_SEL 指令译码模块

CDAP[2:0]
BR_TDO

旁路寄存器
TCK IDEC
ETBR
ECTR1_TDO

仿真控制信号

TCK

ECTR1 模块 STARTC_ Start UCK


UCK&TCK
TCK
JIR_TDO

JTAP_ Update CDAP 模块


ToIdle 启动控制模块
ECR_TDO

JTAP模块 STARTC
MCG_C1

MCG_C0

MCG_Ce

TAP_ STATE信号
TCK JIR_PO

指令寄存器
MPSD 码生成器

TDI
JIR
MCG

EVTAC_ UCK&TCK
UCK&TCK EVTA
ECR_ DLCK MPSD码 CSM_C0
EVTAC模块
状态机
仿真控制寄存器
IDEC_ SECR_SEL CSM CSM_Ce
ECR
EXE[1:0] 、TERM[1:0]
ECR_ DEVM[1:0]
REVT [1:0]

图 3.3 ETAP 模块结构图


ETAP 的整体设计框图如图 3.3 所示,ETAP 可以细分为以下各个子功能模块,
见下表 3.1,外部调试访问接口 JTAP、调试译码模块 IDEC、仿真数据通路选择单
元 EMUX、JTAG 调试指令寄存器 JIR、仿真控制寄存器 ECR、启动控制 STARTC、
模块端口扫描设计(MPSD)码状态机 CSM、MPSD 码生成器 MCG、事件生成(Event
Generation,EVTA)控制 EVTAC 和仿真控制 EMUC 等。
第 20 页
国防科学技术大学研究生院工程硕士学位论文
表 3.1 ETAP 的子功能模块
名称 英文全称 中文全称 注释
JTAP JTAG Test Access Port JTAG 测试访问端口 JTAG 标准的状态机
JTAG Instruction JTAG 标准兼容的指令寄存
JIR JTAG 指令寄存器
Register 器
生成所有数据通路的控制
DPC Data Path Control 数据通路控制
选择信号
COMC COMmand Control 命令控制 生成所有的仿真控制命令
选 择 有效 的通 路 数据 给
EMUX Emulation MUltipleXer 仿真多路选择器
TDO 引脚
STARTC START Control 启动控制 仿真命令的启动控制
Emulation Control 用于仿真逻辑的配置和控
ECR 仿真控制寄存器
Register 制
MPSD Code State 仿真逻辑的工作状态控制
CSM MPSD 码状态机
Machine 逻辑
生成仿真逻辑工作状态的
MCG MPSD Code generator MPSD 码生成器
控制信号
RTDX 和多处理器仿真控
EMUC EMUlation Control 仿真控制

CSM 所需事件信号的生成
EVTAC Event generation Control 事件生成控制
逻辑

为了兼容 PCIE 调试,ETAP 中,需要增加一些逻辑:JIR 需要兼容 PCIE 更新


IR 的逻辑,ECR 需要兼容 PCIE 更新 DR 的逻辑;启动模块 STARTC 模块需要增
加 PCIE 调试模式下的启动信号。各个子模块中关于 IR 和 DR(特别是 ECR)的
输入信号,需要注意选择对应调试模式下的信号。

3.2.2 TAP 控制器

本设计中的 JTAP 模块是符合最新 JTAG 标准的 TAP 控制器[3] [34]。JTAG 标准


定义的 TAP 控制器状态变化均由仿真器时钟 TCK 上升沿时的仿真模式选择信号
TMS 决定。
TAP 控制器所有 16 个状态的简单描述如下。更加详细的描述则请参见 JTAG
标准(IEEE Std 1149.1-2001)。TAP 控制器总的操作规则如下[29][30]:
(1)所有状态的变化只响应下列事件:TCK 上跳沿;TRST_N 输入(如果有)
跳变到逻辑 0;上电(power-up)。
(2)所有状态的变化发生都由仿真器时钟 TCK 上升沿时的仿真模式选择信

第 21 页
国防科学技术大学研究生院工程硕士学位论文

号 TMS 决定;
(3)TDO 输出的寄存器的选择电路只在 Shift-DR 和 Shift-IR 两个状态下激活
TDO 输出;
(4)JTAP 完全为 TCK 下逻辑,在 PCIE 访问时不被激活[31]。
表 3.2 JTAP 的状态编码
JTAP 状态 16 进制编码
Exit2_DR 0
Exit1_DR 1
Shift_DR 2
Pause_DR 3
Select_IR_Scan 4
Update_DR 5
Capture_DR 6
Select_DR_Scan 7
Exit2_IR 8
Exit1_IR 9
Shift_IR A
Pause_IR B
Run_Test/Idle C
Update_IR D
Capture_IR E
Test_Logic_Reset F

JTAG 标准中定义的 TAP 控制器 16 个状态的状态机编码如表所示,通过该状


态机的控制,从而将 JTAG 的串行调试请求信息转化为 ET 的调试指令,控制 ET
完成对应的调试工作,在本设计的 TAP 控制状态机如图 3.4 所示。
1 Test- Logic- Reset
F 0
1 1 1
0 Run- Test/Idle Select_DR- Scan Select_IR- Scan
4
7
C 0 0
1 1
Capture_DR Capture_IR
E
6 0 0
Shift_DR Shift_IR
2 A
1 0 1 0
1 1
Exit1_DR Exit1_IR
1 9
0 0
Pause_DR Pause_IR
3 B
1 0 1 0
0 0
Exit2_DR Exit2_IR
0 8
1 1
Update_DR Update_IR
5 1 0 D 1 0

图 3.4 TAP 状态机图


第 22 页
国防科学技术大学研究生院工程硕士学位论文

若用 CState 表示 JTAP 的当前状态,NState 表示 JTAP 的下一状态,则输出的


赋值描述如下:
(1)JTAP_Reset:仿真测试逻辑的复位信号,低电平有效。
(2)JTAP_Select:IR 和 DR 数据链选择信号。为 1,选择 IR;否则选择 DR。
(3)JTAP_ShiftIR:IR 移位控制信号,当处于 Shift-IR 状态时有效,在 TCK
上跳沿被采样。
(4)JTAP_UpdateIR:指令寄存器 IR 更新控制信号,当处于 Update_IR 时有
效,在 TCK 下跳沿被采样。
(5)JTAP_CaptureIR:IR 捕获控制信号,当处于 Capture_IR 状态时有效,在
TCK 上跳沿被采样。
(6)ET_ShiftDR:DR 移位控制信号,当处于 Shift_DR 时有效,在 TCK 上
跳沿被采样。
(7)ET_UpdateDR:DR 更新控制信号,当处于 Update_DR 时有效,在仿真
时钟 TCK 的下降沿被采样。
(8)ET_CaptureDR:DR 捕获控制信号,当处于 Capture_DR 时有效,在仿
真时钟 TCK 上降沿被采样。
对于 JTAP_Exit1DR、JTAP_Exit2DR、JTAP_Idle、JTAP_PauseDR 等几个状
态,由于它们是过渡状态,这里就不再赘述。

3.2.3 指令寄存器 JIR

JIR 是和 JTAG 标准兼容的指令寄存器。JIR 是一个 50bit 的移位寄存器,在


TAP 状态机的控制下,将 TDI 的串行输入信号不断向左移位,直到指令移位完毕,
进入 Update_IR 状态,才将 JIR 寄存器里数据并行输出给 ET 其它功能单元,JIR
的指令寄存器结构如图 3.5 所示。
49 42 41 36 35 0

TDI TDO
8位指令 6位操作码 36位数据

图 3.5 JIR 的指令寄存器

JIR 指令寄存器的高 8 位用于存放调试指令,中间 6 位操作码是读写操作的控


制码,低 36 位用于保存读写访问地址和数据,指令码空间 0x20 ~ 0x2f 用于表示仿
真指令,0x30 ~ 0x3f 保留用于特殊仿真指令,0x40 ~ 0x4f 保留用于测试指令,如
3ff4 表示读操作,3ffe0 表示写数据操作等。
JIR 的 8 位操作码有三个作用,如表 3.3 所示。

第 23 页
国防科学技术大学研究生院工程硕士学位论文
表 3.3 8 位操作码的作用
(a)在 JTAP 状态机处于 Shift-DR 状态时,用于选择数据扫描通路;
(b)在 JTAP 状态机处于 IDLE 状态时,用做控制命令;
(c)在测试模式下,直接应用控制码到域访问端口 DAP,将 JTAG 状态映射
到 DAP 控制状态。

3.3 仿真/调试部件的功能

ET 部件完成对 DSP 的仿真/调试的主要操作有三点:一是 DSP 资源的访问,


主要是读写访问 DSP 的体系结构寄存器如标量寄存器 R0、向量寄存器 VR0 等,
对系统存储资源的访问如 DDR 空间、SPI 空间等以及对外设配置寄存器的读写访
问如 Timer 的配置等。第二个就是对流水线的控制:包括基本的流水线复位、停
止、运行和单步;软件断点;硬件断点。最后就是对事件进行统计:统计 DSP 运
行中的各个性能参数,方便程序开发人员对应用程序的观测和优化等,如 DP 发出
停顿的持续周期、中断有效次数、分支命中次数等。下面就来详细的介绍设计中
ET 的这三大调试功能。

3.3.1 流水线控制

ET 部件对流水线的控制作用主要集中在系统复位、暂停、单步执行以及运行
等,其中还包括 HWBP 断点和 SWBP 断点的控制,从而实现对流水线进行精准和
准确的控制。M-DSP 的流水线调试(CPU Pipeline Debug Control, CD)模块负责
DSP 调试模式下进行流水线的运行和暂停等操作,从而便于观测程序的具体执行
状态信息。
其结构如图 3.6 所示。ET_Stall 信号是由 CD 模块产生的 DSP 控制信号,能够
完成流水线运行、暂停以及单步等仿真操作,DSP 的调试操作需要依托它来完成,
ET_Stall 为 1 时,整个流水线被暂停,此时 ET 部件才能对 DSP 进行一系列的调试
操作。

第 24 页
国防科学技术大学研究生院工程硕士学位论文

ET
ET_StallCPU

CDAP_ State
CDAP ET_ StallCPU
MD
HBPC_ HWBP
AD
DSP
CPU_ Stall
CD CD_ ABP_ DET
DC2_ SWBP
CD_ SWBP_ DEC
IH_Flush
ETAP
ECR_ DEVM
CPU_NopET

图 3.6 CD 模块结构图

CD 模块的端口信号如表 3.4 所示。


表 3.4 CD 的端口信号
名称 来源 位数 意义
CDAP_State CDAP 3 DSP 访问端口状态
ECR_DEVM ECR 2 ECR 的模式域
HBPC_HWBP HBPC 1 硬件断点有效信号
HBPC_HWBP_tmp HBPC 1 硬件断点站前有效信号
DC2_SwbpEn DSP 1 SWBP 断点的站出使能
DC2_SwbpET_Temp DSP 1 软件断点站前信号
Reset 外部引脚 1 系统复位信号
UCK PLL 1 系统时钟信号
ET_StallCPU ETAP 1 ET 给 DSP 流水线暂停控制信号

(1)仿真停:使流水线暂停的事件主要有有以下几种,来自 JTAG 的 halt 请


求;来自硬件断点 HWBP 匹配;探测到软件断点 SWBP;来自 PCIE 或 ARM 仿真
停请求。
(2)单步执行:流水线可观测性是进行 DSP 应用程序开发的关键,所以 ET
不必针对指令单步(即指令完全执行完毕)进行设计,在本文中的单步策略是让
指令流水线往前执行一站,这样更便于开发人员观测应用程序执行的中间过程。
(3)仿真运行:放开流水线,使 DSP 处于正常的运行状态。

第 25 页
国防科学技术大学研究生院工程硕士学位论文

3.3.1.1 软件断点
通过修改指令,在指令里插入软件断点标志,在 DP 站探测软件断点,并将软
件断点信号传给 ET,这样 ET 将流水线停止在了该软件断点指令的 E1 站,具体详
情见第四章。

3.3.1.2 硬件断点

根据芯片的调试需求以及考虑到 M-DSP 的硬件开销,M-DSP 的 ET 部件可以


支持硬件断点(M-DSP 可以最多可支持 8 个硬件断点)的设置,对应的断点寄存
器有:8 个 36 位的硬件断点地址寄存器以及 8 个 1 位的硬件断点使能寄存器,用
于保存断点指令的 PC 值和硬件断点的开关使能,利用 ET 保留空间进行地址映射,
为每个寄存器都分配唯一访问地址。
硬件断点的设置:通过 JTAG 仿真器将目标指令 PC 值写入到地址寄存器
HBPAR 中,并将使能寄存器 HBPER 置 1,完成 HWBP 断点的设置。
硬件断点的取消:直接将其使能寄存器 HBPER 置零,便完成了对 HWBP 断
点的取消。
硬件断点的处理:本文中将 HWBP 断点的检测单元设计在指令流水线的 DC2
站,将断点地址寄存器 HBPAR 里保存的指令 PC 值与 DC2 站中的地址进行实时
监测和比对,若比对结果一致且断点使能开关 HBPER 有效,则生成 HWBP 断点
有效信号 HBPC_HWBP_tmp 传给 ET 部件进行处理,并在下一个时钟周期站出,
使目标断点指令在执行 E1 站的地方暂停下来。和软件断点不同,硬件断点的设置
和取消并不改变目标指令,因此,在从硬件断点而仿真停的状态恢复流水线运行
时,只需要重新启动流水线运行。

3.3.2 资源访问

在 M-DSP 的系统调试过程中可访问到的 DSP 系统资源主要有:外部异步存储


器(ASYN)、外部 DDR 存储器、向量数据存储阵列(VM)、标量/向量寄存器、
流水线状态寄存器、控制寄存器、矩阵寄存器、部分存储体映射(memory- mapped)
寄存器及 ET 内部的一些状态寄存器。
ET 对这些资源的读写访问有三种途径:一是利用 ET 保留空间进行地址映射,
ET 部件进行译码后,生成对这些资源访问的读写信号,从而实现 ET 与 DSP 片内
资源之间的直接访问,二是 ET 部件与 DSP 各存储空间的通信是通过 DMA 部件来
完成的,ET 将读写有效信号、读写地址以及数据等访问信号发送给 DMA,三是
通过 DSP 的配置总线完成对配置空间的通信,通过 ET 对配置空间进行配置时,
增加一个总线请求控制器,ET 将相应的请求直接放到配置总线上即可对相应的配
置进行通信。其控制流程如图 3.7 所示。
第 26 页
国防科学技术大学研究生院工程硕士学位论文

DDR、SPI、DSP内核存储空间
DMA总线 (SM、AM)及GC的配置空间

Per总线 DSP片内私有地址配置空间和
ET
DSP共享外设配置地址空间

ET保留空间地
址进行映射
DSP体系结构寄存器
(Rx、VRx、CR)等

图 3.7 ET 资源访问的通信

3.3.2.1 ET 保留映射空间访问

ET 部件能进行访问的 M-DSP 内核体系结构寄存器比较多,主要有控制寄存


器 CR、标量处理单元 SPE 控制寄存器、访存指令中用于地址计算的寻址寄存器
AR、向量处理单元 VPE 的 CR 寄存器和向量局部 CR 寄存器、流水线状态寄存器
以及调试部件内部的控制寄存器等。ET 对于这些体系结构寄存器的读写访问是通
过 ET 保留空间地址进行映射访问,在 ET 的保留空间里都为它们分配了独立的映
射地址,ET 只需要对这些映射地址进行操作就完成了对相应目标寄存器的读写访
问。
ET 保留空间的地址编址本文就以标量寄存器作为示例进行说明,Rx 共有 64
个,无论是 SPE 内部,还是保留空间地址,都为它们每个分配一个编址。如下表
3.5 所示。
表 3.5 ET 内部 SPE 的保留空间编码
寄存器 编址(6’b) ET 分配地址(36’h)
R0 000000 xx1E_1000
R1 000001 xx1E_1001
R2 000010 xx1E_1002
R3 000011 xx1E_1003
R4 000100 xx1E_1004
R5 000101 xx1E_1005
R6 000110 xx1E_1006
R7 000111 xx1E_1007
R8 001000 xx1E_1008
R9 001001 xx1E_1009
R10 001010 xx1E_100A
R11 001011 xx1E_100B
„ „ „

第 27 页
国防科学技术大学研究生院工程硕士学位论文

ET 与 SPE 的接口信号如表 3.6 所示,ET 部件通过以下信号进行直连的方式,


完成调试部件对标量寄存器的访问。
表 3.6 ET 与 SPE 的接口信号
端口信号 方向 位宽 含义
ET_Stall Output 1 全局暂停信号
ET_ReadSPE Output 1 ET 读 SPE 信号
ET_WriteSPE Output 1 ET 写 SPE 信号
ET_AddrSPE Output 6 ET 访问 SPE 地址
ET_DataCPU Output 32 ET 写 SPE 的数据
ET_StallCPU Output 1 ET 发出的暂停信号
SPE_DataET Input 32 SPE 返回 ET 的数据

3.2.2.2 存储空间的访问

ET 对于 DDR、SPI 等核外存储空间、DSP 内核存储空间(SM、AM)及 GC


的配置空间的读写访问是通过 DMA 进行通信的。ET 与 DMA 部件的接口信号如
下表 3.7 所示。
表 3.7 ET 与 DMA 的接口信号
端口信号 方向 位宽 含义
ET_DMA_Data Output 32 ET 发给 DMA 写数据
ET_DMA_Mask Output 16 ET 发给 DMA 写数据的 Mask 信号
ET_DMA_Wrt Output 1 ET 向 DMA 发出的写请求
ET_DMA_Rd Output 1 ET 给 DMA 发出的读请求
ET_DMA_Addr Output 36 ET 向 DMA 发出读写请求地址
DMA_ET_RdBufBsy Input 1 DMA 读 Buffer 忙信号
DMA_ET_WrtBufBsy Input 1 DMA 写 Buffer 忙信号
DMA_ET_Data Input 32 DMA 向 ET 发出读返回数据
DMA_ET_DataRdy Input 1 DMA 给 ET 读返回数据有效信号

ET 利用 DMA 部件进行 DSP 存储空间读写访问时,ET 读数据粒度大小为一


个字,读地址不要求 512bit 对齐,但此时 DMA 会读出目标地址所在行的数据,并
根据 ET 给的数据掩码,取出所需要的字宽数据,返回给 ET。ET 与 DMA 通信时
需在 DMA 无读/写 Busy 信号时,把相应读写请求送到 DMA 端,如果是写请求,
则 ET 的任务完成,直接恢复到 IDLE 状态,如果是读请求,等待 DMA 传回读数
据后,恢复到 IDLE 的位置。
ET 读操作的通信如图 3.8 所示:ET 利用 DMA 部件完成对存储空间的读操作
时,首先,根据 DMA 与 ET 之间的写缓冲是否正忙,接着向 DMA 传送读请求和

第 28 页
国防科学技术大学研究生院工程硕士学位论文

读地址,DMA 部件收到 ET 的读请求后,开始执行相应的存储空间数据搬移工作,


然后根据 ET 给 DMA 的掩码,把结果放入读缓冲中,并发送 Ready 信号给 ET,
表明 ET 此时可以接收返回数据,从而 ET 完成了对存储空间的读操作。

ET_DMA_Addr
ET_DMA_Rd 写Buf

ET DMA_ET_DataRdy DMA
DMA_ET_Data

DMA_ET_RdBufBsy 读Buf

DMA_ET_WrtBufBsy

图 3.8 ET 通过 DMA 的读操作

ET_DMA_Addr
ET_DMA_Wrt
写Buf
ET_DMA_Data

ET DMA

DMA_ET_RdBufBsy
读Buf
DMA_ET_WrtBufBsy

图 3.9 ET 通过 DMA 的写操作

ET 写操作的通信如图 3.9 所示:ET 利用 DMA 向存储空间进行写数据操作时,


首先,根据 DMA 与 ET 之间的写缓冲是否正忙,不忙时 ET 给 DMA 传送写请求、
写地址和写数据;DMA 收到写请求后,然后根据拿到的掩码,开始执行对目标地
址的写操作,从而 ET 完成了对存储空间的写操作。

3.2.2.3 配置空间的访问

对于 DSP 片内私有地址配置空间和 DSP 共享外设配置地址空间的访问,通过


总线请求控制器,从而实现 ET 对配置空间的读写访问,ET 直接将相应的请求放
到配置总线上即可对相应的配置寄存器进行通信。ET 通过配置总线访问的通信如
下表 3.8 所示。
表 3.8 ET 与配置总线的接口信号
端口信号 方向 位宽 含义
Per_ET_Bsy Input 1 总线给 ET 的忙信号
第 29 页
国防科学技术大学研究生院工程硕士学位论文
Per_ET_Rdy Input 1 总线读返回有效信号
Per_ET_Data Input 32 总线读返回数据
ET_Per_Addr Output 36 ET 给总线的读写地址
ET_Per_Data Output 32 ET 给总线的写数据
ET_Per_Req Output 1 ET 的对总线的请求信号
ET_Per_Rw Output 1 ET 请求信号,1 为读,0 为写

ET 通过配置总线进行相应空间的读写访问时,如图 3.10 所示,ET 得在配置


总线没有 Busy 时,将相应的读写请求发送到总线上,如果是写请求,则 ET 的任
务完成,直接恢复到 IDLE 状态,如果是读请求,等待总线传回读数据后,恢复到
IDLE 的位置。

ET_Per_Addr
ET_Per_RW

ET_Per_Data
ET_Per_Req
ET Per总线

Per_ET_Bsy

Per_ET_Rdy

Per_ET_Data

图 3.10 ET 通过配置总线的通信

3.3.3 事件统计

在程序运行过程中,有很多发生事件是程序员比较关心的,包括分支命中的
次数、中断有效次数、程序执行包的个数、L1D 读写命中次数等。这些事件可能
对程序员掌握程序运行的动态,改善整体程序执行性能有着很大的影响,将这些
事件数据统计给用户,可以明显提高用户进行程序分析和调试的效率,提升用户
体验。
M-DSP 总共能统计 14 种事件,但考虑到硬件开销和实际的用户需求,事件统
计中一次最多统计 2 个事件,所以 ET 相应的硬件(表 3.9 所示)有:2 个 1 位的
事件使能寄存器 EVER,只有置 1 时,这样事件统计的开关才被打开,2 个 8 位的
事件选择寄存器 EVSR,用来对需要统计的事件进行选择,本设计中可以对 15 种
系统性能参数进行统计,最后还有 2 个 36 位的事件计数寄存器 EVCR,ET 统计的
相关事件的数据就保存在事件计数寄存器里。利用 ET 的保留空间对这些寄存器进
行地址映射,从而 ET 可以通过分配的地址直接对它们进行通信。

第 30 页
国防科学技术大学研究生院工程硕士学位论文

表 3.9 ET 性能统计的保留空间分配表
寄存器 保留空间地址(36’h) 位宽 含义 ET 编址
EVSR0 xx 1E_4000 8 事件选择寄存器 0 0
EVSR1 xx1E _4001 8 事件选择寄存器 1 1
EVCR0 xx1E _4010 36 事件计数寄存器 0 2
EVCR1 xx1E _4011 36 事件计数寄存器 1 3
EVER0 xx1E _4020 1 事件使能寄存器 0 4
EVER1 xx1E _4021 1 事件使能寄存器 1 5

表 3.10 ET 的事件统计列表
端口名 编号(8'h) 含义
CYCLE 00 程序运行周期
BRTK 01 分支命中次数
IACK 02 中断有效次数
EXEP 03 程序执行包个数
L1DRWM 04 L1D 读写失效次数
L1DRWH 05 L1D 读写命中次数
L1PRM 06 L1P 读失效次数
L1PRH 07 L1P 读命中次数
DPStall 08 DP 发出停顿的持续周期
VMStall 09 VM 发出停顿的持续周期
SMCStall 0A SMC 发出停顿的持续周期
STALL 0B 程序停顿周期
NOP 0C 有效的 NOP 周期
NonNOP 0D 有效的非 NOP 周期
EACK 0E 异常有效次数
ET 性能统计事件如表 3.10 所示。其中,时钟运行周期等 7 个是统计持续周期
的事件,ET 在 DSP 的 CLK 上跳沿时开始对事件信号进行采样并开始计数;另外
8 个是统计事件发生次数的,ET 在 DSP 的 CLK 上升沿时对事件发生信号进行计
数。

3.4 功能验证

针对 M-DSP 处理器的调试/仿真部件的验证,由于涉及到控制信号对流水线的
作用以及 ET 对于相关存储资源和寄存器的访问,所以仅仅利用模块级进行验证达
不到理想的效果,且无法保证验证的完备性,所以,本文将采用基于 NC_Sim 模
第 31 页
国防科学技术大学研究生院工程硕士学位论文

拟的系统级进行调试部件的功能验证。

3.4.1 验证方法

根据调试部件设计制定的验证计划和功能需求,设计中采用的验证方法有以
下几种:
 CDC 时钟域检测[32];
 Autocheck 检查语法还有基本的代码功能;
 PLI 软硬件结合验证,这部分将在第六章中详细介绍;
 基于 NC_Sim 的仿真环境。
M-DSP 采用的系统级验证环境,主要是基于 Cadence 公司的 Linux 平台下的
NC_Sim 模拟器[33]。ET 部件的 NC_Sim 系统级功能验证,不但需要编写验证的背
景程序,利用编译器进行编译加载到系统级验证环境中,另外还需要编写调试激
励 ET_task,通过搭建的 ET 激励生成环境转化为符合 JTAG 接口的调试命令,这
样当系统级验证环境开始进行运行的时候,ET 的验证激励也将在外部仿真时钟
TCK 的控制下,通过 TDI 输入端口加载到 NC_Sim的模拟环境中,通过查看 NC_Sim
的仿真波形以及仿真数据记录 Log 文件比对,即可实现对 ET 部件的功能验证[34]。
本节重点介绍 NC_Sim 的仿真环境。将在 NC_Sim 模拟仿真环境中,完成对 ET 的
逻辑功能验证。后面的章节中还将设计一个新型 PLI 接口技术的验证调试环境配
合 ET 部件的验证。

3.4.2 功能验证计划

如下表 3.11 所示,制定了 ET 部件系统级验证的相关功能验证计划,并在


NC_Sim 模拟仿真环境中完成对 ET 的逻辑功能验证。
主要的验证点有:
1)从 TDI 调试指令输入到 ET 完成调试任务的各个数据通路;
2)对于流水线的控制:暂停、运行、单步;
3)两种长度类型指令 SWBP 断点的设置以及恢复等操作;
4)硬件断点的设置和取消;
5)ET 对系统资源的读写访问等;
6)ET 对关键事件的性能统计;
7)PCIE 对于 ET 的访问。

第 32 页
国防科学技术大学研究生院工程硕士学位论文

表 3.11 ET 的部件的验证功能点
总纲 主要功能点 备注
1 、 1.1 请求 buf 的状态 buf 一直为空
DNAC 通 连续请求,直到 buf 满(极端情况)
信 buf 部分为空,且有连续写请求。
1.2 调试请求解析 IDEC 模块的指令分析
配置 IR,DR
RSAC 模块中地址的译码
1.3 PCIE 模式的 ET 状态机 IR 通路
DR 通路
2、 2.1DSP 体系结构寄存器资 标量单元寄存器 SRF
资源访问 源 向量单元寄存器 VRF
(两种模 控制寄存器 CR
式下) 地址寄存器 AR/OR
2.2DMA 片内 SM、AM 的空间及外部存储资源
2.3Per 总线 包括各个外设的配置空间及片内配置单元
2.4ET 内部寄存器 主要是性能统计和硬件断点等寄存器资源
2.5 流水线状态 指令流水线各个站的 PC 值等

3、 3.1 单个事件 单个按次数进行统计


性能统计 单个按持续周期计算
3.2 两个事件同时统计 两个按周期统计或按次数统计的事件一起统计

将按次数和按周期统计的两个事件,一起进行统

4 4.1DSP 仿真控制 JTAG 仿真器的硬件复位
流水线控 复位 reset
制 停止 halt
运行 run
单步 step
设置:断点未进入流水线
4.2 软件断点 设置:断点分别在不同的流水线
软件断点的取消
软件断点的检测
软件断点的恢复
4.3 硬件断点 硬件断点的设置
硬件断点的取消

第 33 页
国防科学技术大学研究生院工程硕士学位论文
硬件断点的恢复
4.4 联合控制 连续软件断点
连续硬件断点
SWBP 断点后紧跟 HWBP 断点
HWBP 断点后紧跟 SWBP 断点
软件断点与 Stall/Bsy/NOP 等信号同时为高
硬件断点与 Stall/Bsy/NOP 等信号同时为高
硬件断点、软件断点与 Stall/Bsy/NOP 等信号同
时为高
5、数据一 DMA-NAC
致性(读
写)

3.4.3 验证结果分析

根据表 3.11 的验证计划,编写对应的汇编激励和 ET 调试激励,在模块级和


系统级进行对应的仿真验证,部分关键功能验证结果和分析如下所示:
(1)资源访问
 通过 DMA 对存储空间的访问

图 3.11 ET 读写 AM 空间
如上图 3.11 所示,ET 部件完成对向量存储阵列地址 0x04000_0000 的读写访
问操作。如第二个标线所示,ET 部件在接收到 JTAG 的写命令后,将解析后的写
有效信号 ET_DMA_Wrt 和 ET_DMA_Data 以及写地址 ET_DMA_Addr 等信息发送
到 DMA 部件,然后 DMA 开始处理该 AM 空间地址的写操作,从而将数据
0xFFFFFF05 写入到 0x04000_0000 的地址中。
ET 部件完成对向量存储阵列地址 0x04000_0000 地址的读操作如第三个标线

第 34 页
国防科学技术大学研究生院工程硕士学位论文

所示,ET 在接收到 JTAG 的读访问命令后,将解析后的读有效信号 ET_DMA_Rd


以及读地址 ET_DMA_Addr 等信息发送到 DMA 部件,然后 DMA 部件将读返回数
据 DMA_ET_ Data 和读返回有效信号 DMA_ET_ DataRdy 传给 ET,从而完成对地
址 0x04000_0000 的读写操作。

 通过 Per 总线的读写访问

图 3.12 ET 读写 I2C 的配置空间


如上图 3.12 所示,对于 DSP 片内私有地址配置空间和 DSP 共享外设配置地址
空间的访问,ET 是通过总线请求控制器实现对配置空间的读写访问。在上图中,
ET 部件对 I2C 的配置空间地址 0x02030_0000 进行读写操作。如第二个标线所示,
ET 在接收到 JTAG 的写命令后,将解析后的写有效信号 ET_Per_Req 和写信号
ET_Per_RW,写数据 ET_Per_Data 以及写地址 ET_ Per _Addr 发送给总线控制器,
然后总线请求控制器开始处理配置空间地址 0x02030_0000 的写操作,从而将数据
0xFFFFFFFF 写入到 0x02030_0000 的地址中;对 0x02030_0000 地址的读操作如第
三个标线所示,ET 在接收到 JTAG 的读命令后,向总线请求控制器发出对应的读
有效信号和读地址,总线开始读取该地址内容,并读返回数据 Per2_ET_ Data 和有
效信号 Per2_ET_ Rdy 传给 ET 部件,从而完成对地址 0x02030_0000 的读写操作。

 通过 ET 映射地址直接读写访问

图 3.13 ET 读写基址寄存器 AR01


第 35 页
国防科学技术大学研究生院工程硕士学位论文

如上图 3.13 所示,ET 对于 DSP 寄存器访问是通过对 ET 保留空间地址进行映


射来实现的,在 ET 保留空间里都为它们分配了独立的映射地址,ET 只需要对这
些映射地址进行通信就完成了对该 DSP 寄存器的访问。如基址寄存器 AR01 的映
射地址为 0x0401E_0001,在上图中,ET 部件对 AR01 进行读写操作。如第二个标
线所示,ET 在接收到 JTAG 的写命令后,由于该地址为 ET 保留空间的映射地址,
所以 ET 直接生成对应的写有效信号 ET_WriteADR、数据 ET_DataCPU 和地址 ET
_AddrADR 等信息发送给 DSP 内核,在 ET 部件控制下,从而将数据 0x000000208
存进到基址寄存器 AR01 里。
ET 部件对 AR01 的读操作如第三个标线所示,ET 部件在接收到 JTAG 的读命
令后,ET 经过解析后直接生成读有效信息 ET_ReadADR 和读地址 ET _AddrADR,
DSP 内核的返回数据为 ADR_ DataET,从而实现对 AR01 的读写访问。

(2)流水线控制
 硬件断点

图 3.14 HWBP 断点的验证波形图


HWBP 断点能够有效的控制指令流水线在目标指令位置停顿,通过 ET 配置
HWBP 断点的使能信号和断点地址就可以使用 HWBP 断点了。如上图 3.14 所示,
ET 在接收到 JTAG 的对 HWBP 断点的配置命令后,对 HWBP 断点的使能信号
HBPER1 置 1,且设置 HBPAR1 值 0x000000018 作为硬件断点。在流水线运行后,
由于检测到硬件断点信号 HBPC_HWBP,使流水线停顿在断点 PC 处,如上图所
示,指令流水线暂停在 BR_PCE1 为 0x000000018 的地方,便完成硬件断点对流水
线的操作。

 仿真命令控制流水线

第 36 页
国防科学技术大学研究生院工程硕士学位论文

图 3.15 ET 控制流水线运行、单步的波形图
ET 对流水线的控制主要集中在复位、仿真停、单步执行以及仿真运行,如上
图 3.15 所示,ET 在接收到 JTAG 的对流水线的命令后,对流水线进行相应的操作。
如标线 1 处所示,rst_n 信号为低,从而实现 ET 对流水线的复位,标线 2 处,
ET_StallCPU 为 低 , CDAP_State 值 为 6 , DP_PC 值 由 0x000000000 变 为
0x000000172,从而实现了 ET 控制流水线运行的操作,标线 3 处,CDAP_State 值
为 7,DP_PC 值由 0x000000172 变为 0x000000176,从而实现了 ET 控制流水线向
前单步的操作;且需要注意到的是每当 ET_StallCPU 变高时,整个 DSP 的指令流
水线将因全局信号而暂停。以上的各种操作,完成 ET 部件对流水线进行精准和准
确的操作。

(3)性能统计

图 3.16 ET 的性能统计波形图
如图 3.16 所示,为 ET 统计 DSP 内核运行性能的系统级验证波形图。本文中
设置事件寄存器 EVCR0 对系统程序的执行指令包个数进行统计,事件寄存器
EVCR1 对 L1P 读命中的次数进行统计。如图所示,在流水线运行期间,EVCR0
寄存器在 CPU_ExepET 有效期间对程序的执行包进行计数,而 EVCR1 寄存器在每
一次一级程序缓冲单元命中时,进行加 1 计数。在暂停流水线以后,通过读对应
的寄存器可以知道统计的性能参数,在本程序中,可以得出事件统计的程序执行
包个数为 0x16C, L1P 读命中的次数为 0xB,从而为用户了解程序性能提供参考。

第 37 页
国防科学技术大学研究生院工程硕士学位论文

3.4.4 覆盖率分析

对于 M-DSP 的覆盖率研究,本文设计中采用的是 Cadence 公司开发的 ICC 工


具完成 ET 部件的覆盖率验证。仿真/调试(ET)部件的覆盖率分析结果如图 3.17
所示。

图 3.17 ET 覆盖率验证结果

3.5 逻辑综合

逻辑综合设计是 ASIC 前端设计流程中的非常重要环节,是想让处理器的设计


最终满足最初的设计目标,一般在完成 RTL 级设计描述和验证模拟后开始进行综
合设计,在特定的时序、面积、功耗等约束下,将 RTL 级的设计逻辑综合成门级
网表,并初步计算出设计的时序违反、面积和功耗大小等[35]。
逻辑综合是对设计进行优化和映射的过程,是一个不断迭代的过程,其目标
就是寻求时序与面积、功耗这三者之间的一个设计目标的平衡。在逻辑综合过程
中简单的一次综合就能达到最终的设计目标,需要不断的查阅综合结果文件,找
出关键路径,对相关违反的地方继续进行时序优化、面积缩减以及结构调整等修
改,再次综合,经过多次的迭代,直到符合设计的目标要求为止。
目前用于 ASIC 设计综合的主要有 Candence 公司的 PKS 和 Synopsys 公司的
Design Compiler(DC)等[36] [37]。据统计了解,Synopsys 公司的逻辑综合工具 DC
现在得到了全世界 60 多个半导体厂家以及 380 多个工艺库的支持,占据了 ASIC
设计 90%以上的市场份额,被认为是目前 ASIC 设计中最流行的综合工具和实际标

第 38 页
国防科学技术大学研究生院工程硕士学位论文

准。所以 M-DSP 设计中所采用就是 Synopsys 的 DC 综合工具,在线负载模型约束


下进行 RTL 代码的综合。适用于 TSMC 的 45nm 工艺库,满足 1.1GHz 的主频。
ET 部件设计的综合结果如表 3.12 所示,达到设计目标要求。

表 3.12 ET 的部件的逻辑综合结果
2
总面积 18905.846558um
总动态功耗 6.0493 mW
漏电流功耗 2.7465e+05 nW
slack 0.09ps

3.6 本章小结

本章主要介绍了 M-DSP 中仿真/调试部件的详细设计思路和功能验证,主要包


括以下几点:实现了 ET 对 DSP 的资源访问功能、流水线的控制功能以及事件统
计功能的设计,并通过 Candence 公司的 NC_Sim 对仿真/调试部件进行了系统级模
拟验证并对结果进行了分析。随后,使用 Cadence 公司开发的 ICC 工具进行了覆
盖率验证,最后,在 Synopsys 的 DC 综合工具下进行逻辑综合,经过一系列充分
验证,ET 部件功能正确,达到最终的设计目标要求,对于软件断点的详细介绍和
基于 PCIE 的 ET 设计将在下面的章节中进行详细的分析。

第 39 页
国防科学技术大学研究生院工程硕士学位论文

第四章 仿真调试中软件断点的实现

在对流水线进行调试控制的时候,由于设计中 M-DSP 的硬件断点资源是有限


的(8 个硬件断点),所以软件断点(又称 SWBP 断点)将是实施流水线控制的
一个重要的手段,本章将围绕 SWBP 断点的设置以及恢复等方面进行介绍。

4.1 软件断点实现的基本原理

M-DSP 的指令级系统中包含 32 位长度指令和 16 位长度指令,仿真调试中的


软件断点使用指令的条件执行域和指令替换分别进行标志:32 位指令的[31:29]位
编码是全零 3’b000 的时候,说明该指令为软件断点标志指令;而对于 16 位指令的
情况,则用一条 16 位分支部件指令 X 表示软件断点标志指令,然后将新生成的
软件断点标志指令重新写到原先所在的存储区(其中有加载处和备份处)。
SWBP 断点在 DP 站由指令派发部件进行检测,若条件满足,则 SWBP 断点
触发。为了软件断点的恢复,软件断点在停在了指令流水线的执行 E1 站,也就是
DC2 站的站出位置。
另外,因为芯片存储空间地址是按字节(4bit)编址,所以 32 位指令和 16 位
指令组成的取指包大小固定为 512bits,因此取指包地址范围就是首地址到首地址
加偏移量 6’h3F。取指包大小是确定的,所以上层软件就可以很容易计算出预设断
点的指令在不在该取指包内。

4.2 软件断点的处理

软件断点的处理主要分为断点的设置、取消、恢复三个方面,本文将根据断
点指令在指令流水线中的不同位置进行说明。

4.2.2 软件断点的设置

软件断点的设置需要根据被设置为软件断点的目标指令所在的执行包有没有
进入流水线而分别考虑:
 预设断点指令未流入指令流水线
目标指令未进流水线的软件断点的设置:IDE 主机调用驱动软件对应函数,将
原指令数据保存到 SWBP 断点指令链表,纪录的信息包括原指令编码 AIC[31:0]
及其地址 AIA[35:0],然后根据 AIC[1:0]区分指令长度类型,按照上文 4.1 节的机
制将原指令改写为带有断点标志的新指令 AIC_New[31:0],最后按 16 位对齐并且

第 40 页
国防科学技术大学研究生院工程硕士学位论文

包含断点指令标志的 ET_DataCPU[16:0]写回目标指令加载处(内存或外存),并
将目标指令备份处(L1P)作废。
 预设断点指令在指令流水线上
如果目标指令已进入流水线,则除了要修改目标指令加载处(内存或外存)
操作外,还要进行以下操作:
1)PG 站。读取 PG 站指令包的首地址信息,软件便能计算出预设断点指令在
不在此指令包内。若不在,不再对 PG 站做进一步操作;否则,发软件断点信号,
置 PG 站取指包无效,指示指令流水线,重新从指令加载处(内存或外存)取指。
2)PW 站。PW 站存在 1 个取指包 saved_FP[511:0],saved_FP 首地址 PWAR
输出直接扇出给 ET,ET 和 PW 之间的写数据接口采用 16 位宽度,整个 PW 站取
指包共分配 32 个保留空间地址。因此,软件将判断预设断点指令在不在 PW 站取
指包里面,若不在,不再对 PW 站做进一步操作;否则,将按照 16 位对齐并且包
含 SWBP 断点指令标志的 ET_DataCPU[16:0]重新写到原先指令加载的地方。
3)IF 站。ET 对于 IF 站取指包首地址是只读、不写,对于 IF 站取指包指令是
只写、不读。IF 站存在 1 个取指包 IF_FP[511:0]。IF_FP 首地址 IFAR 输出直接扇
出给 ET。ET 和 IF 之间的写数据接口采用 16 位宽度,整个 IF 站的取指包共分配
32 个保留空间地址。因此,软件将判断目标指令是否在 IF 站取指包指令地址范围
内。若不在,不再对 IF 站做进一步操作;否则,将按照 16 位对齐并且包含断点指
令标志的数据 ET_DataCPU[16:0]写回目标指令加载处。
4)DP1 站。 ET 对于 DP1 站取指包首地址是只读、不写,对于 DP1 站取指
包指令是只写、不读。DP1 站有 1 个由 2 个地址连续的取指包合并而成的大取指
包 DP_FP[1023:0],大取指包的首地址 DPAR[35:0],还有一个存有大取指包中无效
半字(16 位)的个数(按地址从高到低的方向)的寄存器 DPPS[7:0]。大取指包首
地址 DPAR 和无效半字个数 DPPS 输出直接扇出给 ET。ET 和 DP 之间的写数据接
口采用 16 位宽度,整个 DP1 站大取指包一共分配 64 个保留空间地址。软件根据
大取指包的首地址 DPAR 和无效半字个数 DPPS 的值便能计算出预设断点指令在
DP1 站大取指里面,若不在,不再对 DP1 站做进一步操作;否则,将按照 16 位对
齐并且包含断点指令标志的数据 ET_DataCPU[16:0]写回目标指令加载处。
5)DP2 站。ET 对于 DP2 站指令包首地址是只读、不写,对于 DP2 站的指令
包是只写、不读。DP2 站的指令包状态为:DP2 站中拥有一个指令窗口大小的缓
冲,这个缓冲中的指令可能被一拍派发,也可能分多拍派发,但是,该窗口中仅
当前拍被派发的那个指令执行包是有效的。而因为软件断点只能位于执行包的第
一条指令位置,并且无论 16 位指令还是 32 位指令的断点标志均设置在这第一条
指令之中。所以,不论 DP2 站是怎样的情况,对于 32 位长度指令来说,将 SWBP

第 41 页
国防科学技术大学研究生院工程硕士学位论文

断点标志信息 ET_DateCPU[31:29]写入到 DP2 站中[31:29]位置即可,而不需考虑


指令的其他域;对于 16 位指令来说,将目标指令用一条 X 指令代替即可,将 X
指令编码 ET_DateCPU[15:0]写入到 DP2 站中[15:0]位置。
6)DC1 站。 ET 对于 DC1 站执行包首地址是只读、不写,对于 DC1 站执行
包指令是只写、不读。DC1 站执行包首地址 DCAR 输出直接扇出给 ET,分配 1
个保留空间地址。DC 站执行包指令将共用 1 个寄存器 DCIR,分配 1 个保留空间
地址。因此,软件读 DCAR,判断其值是否和执行包首地址参数 ExAddr 相等,若
不相等,不再做任何进一步操作;否则,软件控制发出 ET_WriteDC1 有效,将
ET_DateCPU[39:36]写入到 DC1 站中对应指令的[39:36]位置。

4.2.3 软件断点的取消

同 SWBP 断点的设置类似,SWBP 断点的取消也需要分为以下 2 种情况进行


考虑:
a)目标指令还未进入指令流水线
目标指令未进流水线的软件断点取消的实现:
IDE 主机会在前面保存的软件断
点指令表中查询目标指令,若有,则将保存的原始目标指令及其地址存入 AIC[31:0]
和 AIA[35:0],将 AIC[31:0]写回 AIA[35:0]指向的原先指令加载的地方(内存或外
存),再从保存的软件断点指令表中将此目标指令删除,并将目标指令备份处(L1P)
作废。为了软件断点的恢复,也需要上层软件将执行包首地址也作为调用底层驱
动函数的参数,以便清除软件断点指令链表。
b)目标指令(执行包)在指令流水线上
若目标指令已进流水线,则除了完成上面讲到的更新目标指令加载处(内存
或外存)和作废目标指令备份处(L1P)外,还需要对流水线的各个站进行相应的
写操作,将保存在用户 IDE 环境中的原指令写回到断点指令处,完成断点指令的
取消,具体操作同前面 4.2.2 节类似。

4.2.4 软件断点的恢复

当指令派发部件检测到 SWBP 断点有效后,SWBP 断点有效信号将会让指令


流水线停顿在执行 E1 站,实际上是 DC2 站的站出位置,而此时原始的指令编码
已经被修改,如果不进行恢复的话,将导致执行结果的错误,所以必须先完成软
件断点指令的恢复操作:
1)软件断点的检测
当指令在执行过程中进入到流水线指令派发站(DP2)时,派发部件对处于执
行包中第一条指令的位置进行软件断点的检测(详情见 4.5.3 节)。如果检测到
第 42 页
国防科学技术大学研究生院工程硕士学位论文

SWBP 断点信号,DP 将 SWBP 断点有效信号发往 ET 部件进行断点处理。


2)软件断点的执行恢复
此时流水线因 SWBP 断点已经暂停,为了程序的正确执行,需要对指令进行
断点的恢复。软件首先读 DC2AR,然后在保存的软件断点指令链表中查询地址和
其值相等的目标指令 AIC[31:0],按照 DP2 站中断点标志的生成方法,将其写入
DCIR 中。ET 的相关操作应该至少包括:对于 32 位长度指令,将其指令编码
ET_DataCPU[31:0]替换掉已处在译码部件上的各个译码值;若是 16 位长度指令,
将 16 位的指令编码 ET_DataCPU[15:0]替换掉已处在译码部件上的各个译码值,此
时完成软件断点的恢复。

4.2.5 相关存储系统的一致性维护

软件断点的设置和取消操作中,除了针对进入流水线的指令进行相关流水线
寄存器的读写操作以外,还有就是通过 DMA 对外存的读写,因此,这就涉及到对
存储系统进行一致性维护的工作。对于软件断点的设置和取消来说,因为它修改
的是指令,因此,读无需特殊处理,写则需要维护存储系统的一致性问题。
由于 M-DSP 中一级程序 Cache(L1P)不涉及任何的写回操作,所以在进行
一致性维护时,采用了尽可能简单的策略:一旦 ET 的访存写使能信号有效,即将
整个 L1P 的数据进行作废。

4.3 指令派发部件对软件断点的支持

4.3.1 DP 对于 ET 读操作的支持

ET 通过直连的方式实时采样 DP 站 DP_FP 首地址,DP 站缓冲池中的无效指


令段个数,DP2 站执行包指令寄存器,DP2 站执行包首地址,从而能够准确判断
需要修改的指令所在的地方。

4.3.2 DP 对于 ET 软件断点的支持

在指令流水线中,指令派发站有 FD 和 DP 两拍的时序,所以目标指令都有可
能在这两站之中。
(1) 目标指令在 FD 站
ET 对派发部件的写操作主要是进行软件断点的设置和取消,ET 在写软件断
点指令时,会将改写后的断点指令放到 FD 站的大缓冲池的对应指令处,由于 ET
与 DP 的数据带宽是 16 位,因此,ET 写 FD 站的数据是 32 位长度指令的高 16 位。
第 43 页
国防科学技术大学研究生院工程硕士学位论文
1023 16 0
ET_DataCPU 000„„„„000 ET_DataCPU
左移ET_AddrDP
ET_DataShift ET_DataCPU 000„„„„000

(a)ET_DataCPU根据ET_AddrDP进行移位

1023 16 0
Mask 000„„„„000 16'hffff
左移ET_AddrDP
Mask_Shift 111 000„„„„000


ET_Mask_Shift 000 111„„„„111


DP_Cache Cache1 Cache0

Cache_Shift Cache1 000 Cache0

(b)基于掩码的临时缓冲队列

ET_DataShift ET_DataCPU 000„„„„000




Cache_Shift Cache1 000 Cache0

ET_Cache Cache1 ET_DataCPU Cache0

(c)ET修改DP的缓冲队列

图 4.1 ET 写 DP 的缓冲队列
ET 把带有软件断点标记的指令写入 FD 站的大缓冲池中的目标指令位置,操
作过程如图 4.1 所示。
(2) 目标指令在 DP2 站
此时目标指令已经位于 DP 的派发窗口处,而预设断点标志指令是即将被派发
的执行包指令,所以 ET不需要改写目标指令,而直接将软件断点信号 DP2_SwbpET
置有效。如果要取消软件断点的话,ET 会将原始指令 ET_DataCPU 写入到 DP2 站
执行包指令寄存器里。具体过程如下图 4.2 所示。
ET_DataCPU[31:29] ET_DataCPU[15:0] ET_ClearDC1

inst32
EP inst32
inst32
„„

图 4.2 ET 写 DP2 的指令派发窗口


当要取消的目标指令是 16 位长度指令时,ET_DataCPU[15:0]会写入到指令派

第 44 页
国防科学技术大学研究生院工程硕士学位论文

发窗口的低 16 位,当要取消的目标指令是 32 位指令时,ET_DataCPU[31:29]会写


入到该预设断点指令的高三位,此时的写信号为 ET_ClearDC1,因为 DP2 的站出
也就是 DC1 站的站入。

4.3.3 DP 对软件断点的检测

当指令在执行过程中进入到指令流水线指令派发站(DP2)时,派发部件会对
处于执行包中第一条指令的位置实施软件断点检测:对于 32 位长度指令,系统对
每条指令的高三位检测是否为全 0,16 位指令检测是否为 X 指令。如果是,SWBP
断点信号 DP2_SwbpET 将被置为有效,DP 部件将 SWBP 断点有效信号发往 ET 部
件进行断点的处理,如图 4.3 所示。


inst32(1)
DP

inst32_T 位
指 是 Y
„„„
令 否
派 inst32(n) 全 软件断点信号
发 DP2_SwbpET
0

冲 是
窗 inst16(1) 否
口 inst16_T „„„ 为
X

inst16(n) 指 Y

图 4.3 DP2 站软件断点的检测

4.3.4 DP 对软件断点的恢复

当 ET 检测到 DP 的软件断点停信号 DP2_SwbpET 后,ET_Stall 全局控制信号


将被拉高,使流水线处于暂停状态。此时的软件断点指令已经处于 DC2/E1 的站间
寄存器端口上,实际上已经流入了 E1 站。由于断点修改了指令的编码,所以 ET 需
要将原始指令重新写回到流水线,从而保证程序正确的执行。
ET_DataCPU[15:0] 功能部件

ET_DataCPU[31:0] DC2站 E1站

重新译码结果 间
原始指令 Type 锁
ET_RecDC2 域 存


„„

功能部件

图 4.4 DC2 站软件断点的恢复

ET 进行 SWBP 断点恢复的操作如图 4.4 所示,此时 DC2 站首先根据恢复的


数据 ET_DataCPU 来判断该指令是属于哪个功能部件的,并会将 ET_DataCPU 进

第 45 页
国防科学技术大学研究生院工程硕士学位论文

行译码后的值送入功能部件对应指令的译码 DC2 站,从而保证了在执行 E1 站的


正确执行。

4.4 流水线中软件断点的生成

前面介绍了 SWBP 断点的生成原理及 DP 部件在硬件上对其的支持,下面就


来具体介绍下在指令流水线中 SWBP 断点的具体实现。
(1)执行包目标指令为 32 位指令,如下图 4.5 所示,在 CLK=1 时刻,此时
在 DP 的缓冲池内有 BA32,CD32,FE32,G16 指令的存在,当程序开发者需要
在 CD32 这个执行包设置软件断点时,操作过程如下图所示。
(2)执行包目标指令为 16 位长度指令,首先判断目标执行包内是否含有 BR
部件的指令,若没有,则将执行包第一条指令作为目标指令保存,并记录该执行
包首地址,然后用 X 指令代替目标指令作为断点指令;若有,则不论 BR 部件指
令在执行包中的位置如何,都将该 BR 部件指令作为目标指令保存,记录该 BR 指
令的地址,并用 X 指令表示断点指令。如下图 4.6 所示,在 CLK=1 时刻,此时在
DP 的缓冲池内有 BA32,CD16,FE32,G16 指令的存在,当用户需要在 CD16 这
个执行包设置软件断点时,操作过程如下图 4.6 所示。

CLK
ET_Stall
ET_WriteDP
DC2_SwbpET_tmp

ET_RecDC2

DP DC1 DC2 E1
G16 FE32 G16 FE32
ET CD32 BA32 CD'32 BA32
G16 FE32
BA32
CD'32

检测出软件断点 CD'32 BA32


信号DP2_SwbpET CD'32 BA32
CD32
恢复软件断点

图 4.5 32 指令的软件断点设置与恢复操作

第 46 页
国防科学技术大学研究生院工程硕士学位论文
CLK
ET_Stall
ET_WriteDP
DC2_SwbpET_tmp

ET_RecDC2

DP DC1 DC2 E1
G16 FE32 G16 FE32
ET CD16 BA32 CM BA32
G16 FE32
BA32
CM

检测出软件断点 CM BA32
信号DP2_SwbpET CM BA32
CM
恢复软件断点

图 4.6 16 指令的软件断点设置与恢复操作

SWBP 断点设置好后,当流水线处于运行状态过程中执行到该预设断点标志
指令时,将触发 SWBP 断点,从而使流水线停顿在目标指令的执行 E1 站的位置,
并且此时 ET_RecDC2 有效,完成对指令的恢复工作,保证程序的正确执行。

4.5 功能验证

4.5.1 软件断点的功能验证点

表 4.1 软件断点的功能验证计划描述
功能点描述 备注
SWBP 断点设置:断点未流入流水线 通过写 SPI 空间
SWBP 断点设置:断点分别处于不同 PW 站、IF 站、DP1 站、
的流水线 DP2 站以及 DC1 站
SWBP 断点取消:断点未进入流水线 通过写 SPI 空间
软件断点 SWBP 断点取消:断点分别处于不同 PW 站、IF 站、DP1 站、
(SWBP 断 的流水线 DP2 站以及 DC1 站
点) SWBP 断点检测 DP2 站
SWBP 断点恢复 DC2 站
SWBP 断点与与 Stall/Bsy/NOP/Flush
等信号同时为高
SWBP 断点与与 HWBP 断点的联合控

第 47 页
国防科学技术大学研究生院工程硕士学位论文

4. 5. 2 软件断点的验证结果和分析
根据表 4.1 所制定的验证功能点,开始进行对 SWBP 的系统级功能验证,具
体过程如下:
(1)32 位指令软件断点
表 4.2 软件断点验证的背景汇编激励
汇编激励 反汇编激励
VMOVIH 0X0, VR6 40: 20003076 vmovih 0x0,VR6
VMOVIL 0X1, VR7 44: 200038b6 vmovil 0x1,VR7
VMOVIH 0X0, VR7 48: 20003876 vmovih 0x0,VR7
VMOVIL 0X1, VR8 4c: 200040b6 vmovil 0x1,VR8
VMOVIH 0X0, VR8 50: 20004076 vmovih 0x0,VR8
SMOVIL 0x0000, R31 54: 2000f816 smovil 0x0,R31
SMOVIH 0x5000, R31 58: 2a00f856 smovih0x5000,R31
SMVCGC R31, SST //SW1
SMOVIL 0xFFFFFFE, R31 5c: 2f8e806c smvcgc R31,SST
SMOVIH 0, R31 60: 3ffeff16 smovil 0xfffe,R31
SMVCGC R31, EER 64: 2000f856 smovih 0x0,R31
SNOP 2 68: 2f8f206c smvcgc R31,EER
SMVCGC R31, IER 6c: 0146 snop 0x2 //SW2
SMOVIL 0x0, R30 6e: 2f8f006c smvcgc R31,IER
72: 2000f016 smovil 0x0,R30

表 4.3 32 位指令为软件断点的 ET 调试激励


ET 调试激励
ET_Pipe(step);
ET_Pipe(step);
ET_Pipe(step);
ET_Pipe(step);
ET_Write(36'h0_401e_9013,36'h0000_0a00); //软件断点设置
ET_Pipe(run); //流水线运行
ET_Pipe(halt);
ET_Write(36'h0_401e_c002,36'h2a00_f856); //软件断点恢复
ET_Pipe(step); //软件断点停后走单步

如表 4.2 的背景验证激励所示,PC 值为 58 的指令所在的地方设置 SWBP 断


点,具体验证软件断点的 ET 调试激励如表 4.3 所示,这样在放开流水线之后,将
在 PC 值为 58 的 E1 站因软件断点的控制而暂停下来。

第 48 页
国防科学技术大学研究生院工程硕士学位论文

图 4.7 32 指令的软件断点波形
如图 4.7 所示,在 DP_PC 为 36’h000000030 的时候,对反汇编指令 2a00f856
的高 16 位进行软件断点标志的改写,如图中标线 1 处所示,ET_WriteDP1 为高时,
ET_DataCPU[15:0]将断点标志 0X0a00 写入到目标指令处,从而目标指令编码变为
0X0a00f856 , 在 放 开 流 水 线 之 后 , 由 于 派 发 部 件 检 测 到 该 软 件 断 点 信 号
DP2_SwbpET,从而导致流水线在该指令的执行 E1 站暂停下来,如上图所示,流
水线最终停在了 PC 值为 58 所在的指令处。需要特别说明的是软件断点的恢复,
如上图中标线 2 处所示,当流水线在执行 E1 站暂停之后,为了指令的完整性以及
程序的正确执行结果,需要进行 SWBP 断点的恢复工作,这时候 ET_RecDC2 为高,
将原指令编码 2a00f856 通过 ET_DataCPU 重新写回到对应的功能部件中去,从而
完成软件断点的恢复。
(2)16 位指令软件断点
表 4.4 16 位指令为软件断点的 ET 调试激励
ET 调试激励
ET_Pipe(step);
ET_Write(36'h0_401e_8013,36'h0000_0106); //软件断点设置,写入 X 指令
ET_Pipe(run); //流水线运行
ET_Pipe(halt);
ET_Write(36'h0_401e_c002,36'h0000_0146); //软件断点恢复
ET_Pipe(step); //软件断点停后走单步

如表 4.2 的背景验证激励所示,本文在 PC 值为 6C 的 16 位指令所在处设置软


件断点,具体的软件断点的 ET 激励如表 4.4 所示,在指令流水线的取指段 ET 用
一条断点 X 代替该 16 位指令,当放开流水线运行之后,将在 PC 值为 58 的 E1 站
因软件断点的控制而暂停下来。

第 49 页
国防科学技术大学研究生院工程硕士学位论文

图 4.8 16 指令的软件断点波形

如图 4.8 所示,在 DP_PC 为 36’h000000024 的时候,指令流水线的 IF 取指段


对反汇编指令编码 0146 的进行软件断点标志的改写,用一条 X 指令 0106 代替目
标指令,如图中标线 1 处所示,ET_WriteIF 为高时,ET_DataCPU[15:0]将断点 X
指令 0106 写入到目标指令处,在放开流水线之后,由于派发部件检测到该软件断
点信号 DP2_SwbpET,从而导致流水线在该指令的执行 E1 站暂停下来,如上图所
示,流水线最终停在了 PC 值为 6C 的地方。这时候 ET 部件在上层软件的帮助下
完成软件断点的恢复,如上图中标线 2 处所示,当流水线在 E1 站暂停之后,这时
候 ET_RecDC2 为高,将原指令编码 0146 通过 ET_DataCPU 重新写回到对应的功
能部件中去,从而完成软件断点的恢复。

4.6 本章小结

进行芯片的仿真/调试过程中软件断点是对流水线进行控制的一个非常有效的
方式。本章以仿真/调试中的软件断点的原理展开,分析了在指令流水线中的软件
断点的设置、取消、检测及恢复的处理机制,详细介绍了 SWBP 断点的生成原理
及 DP 部件在硬件设计上对于 SWBP 断点的支持。

第 50 页
国防科学技术大学研究生院工程硕士学位论文

第五章 基于 PCIE 的仿真/调试部件的设计

在采用基于 JTAG 的调试平台时,需要利用 JTAG 仿真器对 ET 串行输入,控


制 ETAP 在测试时钟 TCK 下进行状态转换,并更新 IR/DR 寄存器的值,将 IR/DR
的值转换到 DSP 系统时钟域 CLK 下,进行指令解析和译码,完成对芯片的调试任
务。而 PCIE 是在 DSP 系统时钟 CLK 下,以并行访问的形式对 ET 进行操作,所
以在进行逻辑复用的同时,需要特别考虑仿真/调试部件的接口设计等。

5.1 M-DSP 仿真调试的需求分析

PCI Express 是用来对如计算机和通信平台的应用中与外围设备进行互连的第


3 代高性能 I/O 总线,现在被大家广泛的使用,能够为各设备的互连通信提供高性
能、高速度、双/单工、点对点以及差动信令的通信链路[38] [39] [40]。
ARM 处理器是一种 32 位嵌入式 RISC 处理器,具有高性能、体积小、低功耗、
低成本等特点。ARM 提供高性能计算能力和领先的功效并能够很好的降低了系统
成本,是嵌入式处理器和应用程序处理器行业的翘楚,目前应用非常广泛。
由于 M-DSP 作为一款针对无线通信技术、视频和图像处理而开发的浮点向量
DSP。将能够很好的支持 PCIE 和 ARM 技术,所以本文设计的仿真/调试部件也需
要提供以上两种方式的调试。由于 PCIE 和 ARM 都是通过 DNAC 对 ET 进行访问,
读写机制一致,所以本章节只单独介绍基于 PCIE 的仿真/调试部件的设计。
ET 仿真/测试部件
CLK域 配
JTAG TCK域


TDO 线
MD存储域
异步时钟处理 DMA

硬件断点及
ETAP AD分析域
TDI 事件统计
TMS DSP_
CD控制域 CORE
TCK
流水线控制
TRST
CDAP
控制域访问端口

CLK域
CPU访问状态机DNACBuf

NAC

图 5.1 ET 内部模块图

第 51 页
国防科学技术大学研究生院工程硕士学位论文

如上图 5.1 所示,加斜线填充的部分是配合 PCIE 通过调试部件对 DSP 进行通


信时需要增加的逻辑。其基本原理是:ET 内部的寄存器资源对于 PCIE 是可见并
且可写的,PCIE 通过配置 ET 的 IR/DR(在系统时钟 CLK 下),将相应的仿真/
调试指令写入对应的寄存器中,ET 负责对调试命令进行解析和译码,完成对 DSP
芯片的调试工作。这里需要增加 PCIE 对 ET 的配置通路,并且因为要兼容 JTAG
调试模式,并最大限度的减少硬件开销,所以在增加新的控制逻辑的同时,尽量
复用原有逻辑,在本设计中需要新增 ET 接收 PCIE 请求信息的状态机:在 clk 域
下控制并更新 IR/DR。
对于同时支持 JTAG模式和 PCIE模式的调试/仿真部件,
设计中需要考虑的是:
(a)异步时钟处理:JTAG 调试时,调试时钟 TCK 由仿真器输入,TAP 控制
器由 TCK 驱动,经异步时钟处理后,各信号进入系统时钟域 clk 下的可复用部分。
而在 PCIE 调试时,TCK 并无时钟输入,TAP 控制器处于静止状态,可复用部分
的输入信号由 PCIE 状态机控制,产生的信号直接在 clk 下。这样,在可复用部分
的入口需要进行两个时钟域下输入信号的选择。
(b)PCIE 调试模式下的复位: JTAG 会通过 TRST_N 信号对 ET 的 JTAG
相关硬件进行复位,在 DSP 系统时钟下的逻辑则通过 reset(rst_n)信号进行复位。
而在 PCIE 调试模式下,无 TRST_N 的输入,需要系统时钟进行复位;但是,因为
ET 本身也会产生对 DSP 的复位信号,所以对 ET 进行复位的系统时钟实际上是经
过处理的:ET 本身没有发出进行 DSP 的复位时,以系统的复位信号为 ET 的复位;
当 ET 产生对 DSP 的复位时,屏蔽掉此信号对 ET 硬件状态的复位。
(c)PCIE 与 ET 的协议:PCIE 的访问与 JTAG 仿真器的访问有所不同,后
者的调试命令顺序发送,并且在前一个命令没有完成时,是不会发送第二个命令
的;而 PCIE 的访问,是并行发送的,因为存在访问通路上的延迟,并且,不会因
为等待 ET 的返回数据而阻塞对其他设备的请求,所以,在 PCIE 访问时,ET 内部
需要设置一个深度与延迟路径相关的 FIFO,并设置相应的写 ready 信号和 Bsy 信
号,用来阻塞 PCIE 的请求。

5.2 PCIE 与 ET 的通信协议

在 PCIE 调试模式下,ET 为 PCIE 的从设备。PCIE 通过 DNAC 向 ET 发送读


写仿真命令,均是以写 IR/DR 的形式完成(将写信号相应的更改到 clk 下的 update
状态机中),设计中采用 DNAC 的配置通道。基本接口信号见表 5.1。

第 52 页
国防科学技术大学研究生院工程硕士学位论文

表 5.1 ET 与 DNAC 的接口列表


类型 位宽(bit) 接口名 含义
Input 1 DNAC_ET_Bsy DNAC 给 ET 的忙信号
Input 1 DNAC_ET_Req DNAC 给 ET 的请求信号
Input 1 DNAC_ET_Rw DNAC 给 ET 的读写信号
Input 30 DNAC_ET_Addr DNAC 给 ET 的读写地址信号
Input 32 DNAC_ET_WrtData DNAC 给 ET 的写数据信号
Input 2 NAC_ET_RNID DNAC 给 ET 的节点信息
Input 5 NAC_ET_DevID DNAC 给 ET 的设备 ID 信息
Output 1 ET_DNAC_Bsy ET 给 DNAC 的忙信号
Output 1 ET_DNAC_ DataRdy ET 给 DNAC 的返回数据有效信号
Output 32 ET_DNAC_Data ET 给 DNAC 的返回数据
Output 2 ET _NAC _RNID ET 返回给 DNAC 的节点信息
Output 5 ET _NAC _DevID ET 返回 DNAC 的设备 ID 信息

PCIE 通过 DNAC 配置 ET 的 IR/DR,在 ET 非 Busy 状态可以接收 PCIE 的配


置写指令。如果该指令是写指令,那么,更改 ET 状态到 Busy 状态(不再接收 PCIE
的请求),并执行相应的写操作,完成写信号的分配后,恢复到 IDLE 状态;如果
是读指令,更改 ET 状态到 Busy 状态(不再接收 PCIE 的请求),并执行相应的
读操作,并在得到读返回数据后,检测 PCIE 端的 busy 和 NAC 端的 Busy 信号,
在无 Busy 时将数据以及地址写回,并恢复到 IDLE 状态。

5.3 36 位数据访问机制

由于 DNAC 的数据传输 DNAC_ET_WrtData 只有 32 位,所以对于相应 36 位


数据的读写需要进行特别的处理,在本设计中对于 36 位数据的处理主要是扩展相
关 36 位数据的在 ET 保留空间的映射地址,先用一个映射地址传高 4 位的数据,
再紧接着传低 32 位数据。
对于读 36 位数据,读操作时,不管 DNAC 给 ET 的地址是读高 4 位的地址还
是读低 32 位的地址, ET 都会按照读 36 位的返回数据传回到 ET 中,只是在读高
4 位数据时,只返回高 4 位数据给 DNAC;读低 32 位数据时,将返回 36 位数据的
低 32 位给 DNAC,于是便完成了 36 位数据的读操作。
对于写 36 位的数据,需先完成高四位数据的写入,ET 将这四位数据先放在
中间寄存器 CIRL_Data 中,然后把后面写入的低 32 位 Data 进行拼接成完整 36 位

第 53 页
国防科学技术大学研究生院工程硕士学位论文

CIR_Data,并将其 CIR_Data 写入对应的地址,于是便完成了 36 位数据的写操作。


在本设计中涉及到读写 36 位数据的主要有:地址寄存器 ADR、硬件断点地址
寄存器 HBPAR、指令流水线各个 PC 值及 CR 寄存器等。下面本文就以地址寄存
器 ADR 进行说明,如表 5.2 所示,对于 36 位的 AR0 寄存器,本文分成了 AR0L、
和 AR0H 两个,它们只是存在于 ET 内部保留空间的映射地址中,实际上 ET 会将
两者的数据合并成 36 位并发往 AR0 寄存器的。而 ET 对于读写地址是否为 36 位
数据是通过地址的第 8 位进行判断的,以写操作为例,当地址第 8 位为 1 时,ET
知道此时写入的数据为高 4 位,并等待低 32 位数据的写入进行合并,此时 ET 才
开始完成对目标地址的写操作。
表 5.2 ET 内部保留空间表
寄存器 ET 内部编址 保留空间(36’h)
AR0L xx1E_0000
00000
AR0H xx1E _0100
AR1 L xx1E _0001
00001
AR1H xx1E _0101
AR2 L xx1E _0002
00010
AR2H xx1E _0102
AR3 L xx1E _0003
00011
AR3H xx1E _0103
„„ „„ „„

5.4 DNACBuf 状态机

DNACBuf 的状态机主要是用于 PCIE 通过 DNAC 配置 ET 的一个控制器,它


将接收到的命令进行分析和处理,从而让 ET 去执行相应的操作[41]。主要包括仿真
控制、读访问操作和写访问操作三大块,状态机的状态转换图如图 5.2 所示。

第 54 页
国防科学技术大学研究生院工程硕士学位论文

IDLE
0
Wr_High4

Read Write_Data_Addr
8 9

Bsy_Stall

Read_Stat Read_Data Sim Write_Core


3 2 6 5

Read_Ready UpdateDR Wait


7 4 1

ExitDR
A

ExecuteDR
B

IDLE
0

图 5.2 DNACBuf 的状态机状态转换流程图

5.4.1 DNACBuf 状态机的状态分析

在这里对设计中的 DNACBuf 状态机各个状态进行简单的说明。


IDLE:当没有读写请求,将保持在 IDLE,根据当前 FIFO 的空满情况,接收
PCIE 给过来的读写请求或者来自 FIFO 的请求,下一状态根据读写请求的不同分
别进入不同的状态。
Read:当接收到的命令为读请求时,对读地址进行判断,如果为 ET 的保留空
间映射地址时,将进入返回读流水线状态的下一状态,否则进入读对应地址空间
的读数据状态。
Write_Data_Addr:当接收到的命令为写请求时,对写地址进行判断,如果为
ET 的保留空间映射地址时,将进入仿真控制 Sim 的下一状态;否则写地址是写 36
位数据的话,首先是写高四位数据,那么下一状态将是回到 IDLE 状态等待低 32
位数据的输入进行合并成 36 位数据再写入到对应的地址;如果写地址是直接写 32
位数据的话,那么下一状态将是 Write_Core 状态。
Write_Core:无论写的是 36 位数据还是 32 位数,等待 DMA、Per 总线或 ET
本身将写数据有效信号发送出去,然后再回到 IDLE 状态。
Sim:ET 对 M-DSP 指令流水线进行仿真控制,如系统复位、流水线单步、运
行、暂停等。

第 55 页
国防科学技术大学研究生院工程硕士学位论文

Read_Data:当读数据已经返回时,将进入到 Read_Ready 的下一状态,只是


此时会对读地址进行判断,如果读的是 36 位数据的高四位的话,将会生成读高四
位数据有效信号。
Read_Ready:当 DNAC 处于不忙的状态的时候,ET 将向 PCIE 返回读数据或
读的状态信息。
还有一些状态作为中间状态,本文就不进行详细介绍了。

5.4.2 PCIE 模式下 ET 的仿真控制

将 ET 保留空间里地址为 CPU_Addr[21:12] == 1E_E 作为仿真控制的映射地址


判断,实时检测 DNAC 发送给 ET 的地址数据,当检测写地址 CPU_Addr[21:12]
为 1EE 时,ET 就认为这是仿真控制的命令,从而直接忽略 DNAC 给 ET 的写数据
DNAC_ET_WrtData,并对地址 CPU_Addr[21:0]进行译码,映射地址译码见表 5.3,
从而 ET 将相应的仿真控制命令传给 ETAP 模块进行最终的仿真控制输出。
表 5.3 ET 流水线仿真控制的映射地址分配
CPU_Addr[21:0] CIR_PO[13:0] 输出给 ET 仿真采样有效信号
ETAP 模块
1E_E000 093f UpdateIR_CPU = 1'b1
1E_E001 083f UpdateIR_CPU = 1'b1
1E_E002 143f UpdateIR_CPU = 1'b1
1E_E003 147f UpdateIR_CPU = 1'b1
1E_E004 20d2 UpdateDR_CPU = 1'b1
1E_E005 20a8 UpdateDR_CPU = 1'b1
1E_E006 20ea UpdateDR_CPU = 1'b1

5.5 与 JTAG 的逻辑复用

5.5.1 存储域模块 MD

能够对系统进行资源访问是 ET 主要的调试功能之一,包括对 DSP 芯片存储


空间和 DSP 体系结构寄存器以及对各个配置寄存器的读写访问。存储域 MD
(Memory Domain)便是仿真调试时用于的读写访问 DSP 核的寄存器和存储空间
的接口部件,MD 的整体结构如下图 5.3 所示。

第 56 页
国防科学技术大学研究生院工程硕士学位论文

ET
CDAP CD AD
DSP core

MD

RSAC

ETAP DMA

DNACBuf REQI
Per

图 5.3 MD 整体结构框图

MD 划分为以下 3 个内部模块:
1) RSAC:将已使用保留空间和其它存储空间分别进行处理,为已使用保留
空间地址直接生成访问控制,为其它存储空间向 DMA 提交请求,为配置
空间向总线提交请求。
2) DNACBuf:为 PCIE 访问的 ET 的控制状态机。
3) REQI:依据 RSAC 模块的请求信号,形成请求参数并向 DMA 或者配置总
线提交。
各个子模块中针对 DMA 的请求处理部分均复制一份用来处理与配置总线的
协议。

5.5.1.1 RSAC 模块

为完成对资源访问的仿真调试功能,M-DSP 将 ET 的保留空间进行地址映射,
从而实现了对 DSP 各个体系结构寄存器的访问。
RSAC 模块负责接收并同步(从测试时钟域同步到系统时钟域)JIR 的指令和
来自 PCIE 的调试命令(本身就已经是在系统时钟下),通过对接收到的指令译码,
对指令进行分别处理,这个在 3.2.2 节已经进行了介绍,这里就不再赘述。
若是对 ET 保留空间的映射地址进行访问操作,则通过 ET 直接生成相应的读
写信号;否则,对读写地址进行分析,产生与 DMA 部件或者总线控制器的请求,
由 DMA 或者总线完成读写操作。
在接收读请求返回的数据时,JTAG 访问模式还必须进行从系统时钟域同步到
测试时钟域的同步,而 PCIE 访问模式依然采用系统时钟。

5.5.1.2 DNACBuf 模块

第 57 页
国防科学技术大学研究生院工程硕士学位论文

DNACBuf 模块主要是用于 PCIE 通过 DNAC 配置 ET 的一个控制器,包括一


个深度为 5 的 FIFO 和一个控制状态机。对于来自 PCIE 的访问,因为访问通路上
存在延迟,并且 PCIE 不会因为等待 ET 的返回数据而阻塞了其他设备的请求,所
以,在 PCIE 访问模式下,ET 内部需要设置一个深度与延迟路径大小匹配的 FIFO。
这个控制状态机的主要任务就是负责将接收到的命令进行分析处理,指挥 ET 进行
执行的操作,反过来,它生成的 Bsy 信号也决定了 PCIE 发送任务的时机。

5.5.1.3 REQI 模块

REQI 模块主要实现向 DMA/Per 提交请求和接收返回数据并且负责给 PCIE 传


回读数据。
RWBuf_Data 和 ET_DataCPU 以及 RWBuf_Addr 是为 36 位的寄存器,ET 通
过 MD 访问存储空间时,先把地址写入到 RWBuf_Addr,数据写入到 ET_DataCPU
之中,然后根据当前 DMA 和配置总线是否 Bsy,不忙的话便向 DMA 或者配置总
线发出写请求,DMA 收到写请求后,便将写数据写入到目标地址中。MD 对存储
空间进行读操作时,向 DMA 或者配置总线发出读请求,DMA 或者配置总线收到
读请求后,根据地址拿到数据,当返回数据准备好了之后,便放入到 RWBuf_Data
中,然后 MD 将 RWBuf_Data 中的内容发送给 JIR 或者返回给 DNAC。具体描述
如下:
1)读操作:当指令寄存器 JIR 的控制位为 0x3ff4 或收到 CPU 发出的 CIR_Read
命令时,RSAC_IR 的低 36 位表示读操作的地址;并当 DMA/Per 非 bsy 时,向它
们发出读请求,DMA/Per 返回数据到 RWBuf_Data 中并输出;JTAG 模式下等待
JIR 捕获这些数据到其低 36 位上,输出到 TDO;PCIE 模式下,直接与 DNAC 通
信将数据返回。
2)写操作:当 JIR 的高 14 位为 0x3fe0 或收到 PCIE 的 CIR_Write 命令时,
RSAC_IR 的低 36 位或 CIR_Data[65:30]表示写操作的数据。当指令寄存器 JIR 的
控制位为 0x3ff3 时,其低 36 位为写地址,在非 bsy 时向 DMA/Per 发出写请求,
而 PCIE 是将写数据和写地址同时发出的。
这样 ET 便实现了通过逻辑复用的方式实现了两种模式下的资源访问。

5.5.2 指令译码模块 IDEC

在 ET 中有一个专门用来进行调试指令解析的模块(Instruction DECode,
IDEC),该模块负责对仿真指令 JIR_PO 高 14 位进行译码。仿真指令 JIR_PO 的
来源既有来自 JTAG 的也有可能来自 PCIE 的。
为了与 JTAG 模式下的的逻辑进行复用,所以在该模块的入口处增加两个选
第 58 页
国防科学技术大学研究生院工程硕士学位论文

择逻辑:1)使用 PCIE 的 req 选择 JIR_PO 的来源:如果有 PCIE 的信号过来,则


不再选择 JTAG 的数据,而是选择 PCIE 的请求指令;2)使用 PCIE 的 req 信号,
来决定输入控制信号 STARTC_Start 的来源:如果有 PCIE 的 req,则将 req 代替原
JTAG 的 STARTC_Start。如图 5.4 所示。
IDEC
JIR_PO[49:42] IDEC_ SCTL_ SEL
JIR_PO EMUX IDEC_ SCTR_ SEL
CPU_ Data (TCK) IDEC_ BSCAN_SEL
CPU_Req IDEC_ SDAT_ SEL
IDEC_ SECR_SEL
STARTC_ Start
STARTC_ Start IDEC_DIR_SEL
CPU_Req IDEC_ BYPASS_SEL

JTAP_ Reset
IDEC_ SCSM_ EXE
CPU_ Reset CSM
(UCK)
IDEC_ SCSM_ TERM
VM_Bsy IDEC_ SCSM_ LOCK
SMC_Bsy
DSP
UCK IDEC_ ResetCPU
(UCK)
TCK

图 5.4 IDEC 结构图

在本设计中有很多 JIR 编码的指令的命令由于用不到,成为冗余的逻辑,所以


便去掉了,具体的输入输出信号列表见表 5.4、表 5.5 所示。
表 5.4 IDEC 的输入信号
名称 来源 位数 意义
JIR_PO[49:42] JIR 8 当前调试指令编码,即 JIR_PO[45:38]
JTAP_Reset JTAP 1 仿真/测试逻辑复位信号
STARTC_Start STARTC 1 与 UCK 同步的、单周期的启动脉冲
VM_StallET DSP 1 向量存储体访存冲突引起的全局暂停信号
SMC_StallET DSP 1 标量访存控制引起的全局暂停信号
TCK TCK 1 JTAG 标准测试时钟输入信号
UCK PLL 1 JTAG 标准测试时钟输入信号
CPU_Reset DSP 1 PCIE 调试模式下的 ET 复位信号

表 5.5 IDEC 的输出信号


名称 目的 位数 意义
选 通 边 界 扫 描寄 存 器 通 路, 对 应
IDEC_BSCAN_SEL EMUX, BSR 1
EXTEST、 PRELOAD_SAMPLE 指令
选通内部数据扫描 通路。(其数据
IDEC_SDAT_SEL EMUX 1
MDAP_TDO=0)
选 通 控 制 扫 描 通 路 (SCTL_HALT 、
IDEC_SCTL_SEL EMUX, 1 SCTL_CNTL)
(其数据 MDAP_TDO=0)

第 59 页
国防科学技术大学研究生院工程硕士学位论文
EMUX,
IDEC_SCTR_SEL 1 选通事件计数器通路
ECTR1
IDEC_SECR_SEL EMUX, ECR 1 选通 ECR 通路
IDEC_BYPASS_SEL EMUX, BR 1 选通旁路寄存器通路,对应 Bypass 指令
IDEC_DIR_SEL EMUX, DIR 1 选通 DIR 通路,对应 IDCODE 指令
对应 JIR 编码为 0x20 指令的命令,它指
引 CSM 应用 ECR 的 EXE 位域到 MPSD
IDEC_SCSM_EXE CSM 1 码生成器 MCG(使信号 MCC_CSEL=1,
选择 EXE 位域);复位 LOCKED 状态,
进入 EXECUTE 状态(MCC)。
对应 JIR 编码为 0x21 指令的命令,它指
引 CSM 应用 ECR 的 TERM 位域到 MPSD
IDEC_SCSM_TERM CSM 1 码生成器 MCG(使信号 MCC_CSEL=0,
选择 TERM 位域);复位 LOCKED 状态,
进入 TERMINATE 状态。
对应 JIR 编码为 0x24 指令的命令,指引
CSM 进入 LOCKED 状态,“冻结”当前
IDEC_SCSM_LOCK CSM 1
码(MPSD 码)。
信号 CSM_LOCK=1
IDEC_ResetCPU PCIE/ARM 1 ET 复位 CPU

5.5.3 仿真控制寄存器 ECR

作为测试数据寄存器之一的仿真控制寄存器 ECR,用于各模块域的时钟配置
选择、工作模式(仿真或测试)选择和域访问端口 DAP 的可编程控制。ECR 位宽
20,包含仿真控制所需的各种模式域,仿真控制寄存器 ECR 的各个位域具体功能
描述如图 5.5 所示,其输入输出端口信号详情见表 5.6 和 5.7 所示。
19 18 15 14 13 12 9 8 7 6 5 4 3 2 0

MCS EMUC STSL DLCK DEVM EXE TERM REVT

图 5.5 仿真控制寄存器 ECR

JTAG 访问时,通过 shiftDR 进行 TDI 的移位,并更新 ECR 中每一位的值。


在 UpdateDR_UCK 时,将 ECR 中的值引入 UCK 时钟域下。而 PCIE 写 ET 的 ECR
时,通过请求信号,将 ECR 配置为想要写的值,其所有逻辑都在 UCK 下进行。
表 5.6 ECR 的输入信号
名称 来源 位数 意义
CIR_ECR CPU_Req 20 经过 ET 寄存器保存的 PCIE 的请求指令
UpdateDR_CPU CPU_Req 1 PCIE 调试模式下的更新 IR 的信号,此信号

第 60 页
国防科学技术大学研究生院工程硕士学位论文
高有效,采样 CIR_ECR 到相应的指令寄存
器。
IDEC_SECR_SEL IDEC 1 ECR 扫描通路选择信号
JTAP_Idle JTAP 1 JTAP 处于 Run-Test/Idle 状态
JTAP_Reset JTAP 1 仿真/测试逻辑复位信号
JTAP_ShiftDR JTAP 1 移位控制信号
JTAP_UpdateDR JTAP 1 更新控制信号
TCK TCK 1 测试时钟
TDI TDI 1 JTAG 标准测试数据输入
UCK PLL 1 功能时钟

表 5.7 ECR 的输出信号


名称 目的 位数 意义
ECR_DEVM JIR, MCG 2 器件模式域
ECR_DLCK EVTAC 4 访问端口的锁止域
ECR_EMUC EMUC 4 仿真引脚配置域(保留,但功能未使用)
ECR_EXE CSM 2 MPSD 执行码域
ECR_MCS DAP 1 时钟选择域(保留,但功能未使用)
ECR_REVT CSM 3 远程事件域
ECR_STSL JIR 2 状态选择域
ECR_TDO EMUX 1 ECR 扫描通路测试数据输出
ECR_TERM CSM 2 MPSD 终止码域
M-DSP 中的仿真控制寄存器 ECR 负责对流水线的运行状态实施控制,在本设
计中,对那些保留域都配置成全 0。下面将主要分析三个用于调试流水线的控制域
EXE、TERM 和 REVT。
(1)EXE,叫做执行码(EXEcution Code)域。该域有 2 位执行码,分别是
C0 和 Ce,这两个信号的不同组合便构成了实施流水线控制的几种状态,如表 5.8
所示。
表 5.8 ECR 执行码
C0 Ce 执行码 状态名
1 1 FUNC 功能运行
1 0 CNTL 控制运行
0 1 HALT halt

当执行码 EXE 为 2’b11 时,即 FUNC 状态,表示系统将变成流水线运行的状


态,它是用于完成系统从调试状态到流水线运行状态的转换。
当执行码 EXE 为 2’b10 时,即 CNTL 状态,表示系统将会处于可调试的状态,

第 61 页
国防科学技术大学研究生院工程硕士学位论文

它是从运行状态和调试状态的过渡状态。
当执行码 EXE 为 2’b01 时,即 HALT 状态,表示系统将变成调试状态,它是
用于完成系统从流水线运行状态到调试状态的转换。
(2)TERM,叫做终止码(TERMination Code)域。该域有两位,包含 2 位
终止码,终止码的含义与前面 EXE 执行码域的执行码相同,它的作用是用来配合
EXE 域的执行码对流水线进行控制的。
(3)REVT,叫做远程事件(Remote Event)域。该域有三位,它的 3 位编码
是用来指定调试状态的执行码从 EXE 执行码域转换到 TERM 终止码域或是两者进
行逆转换的条件,REVT 远程事件域的编码如下表 5.9 所示。

表 5.9 REVT 远程事件域编码


REVT 编码 含义
000 保持为当前的状态
001 在 TERM 域一个时钟周期以后,便切换到 EXE 执行码域
010 在 EXE 执行码域一个时钟周期以后,便转换到 TERM 域
其它 目前未用到,保留

5.6 验证与测试

本章的重点是在 MD 模块,主要工作验证在 PCIE 调试模式下,ET 部件接收


调试指令解析译码以及数据通路和控制通路的正确性,从而实现在不同平台下实
现对芯片的三大调试功能。

5.6.1 功能验证计划

表 5.10 PCIE 的调试模式下的功能验证点描述


总纲 功能点描述 备注
1 、 1.1 请求 buf 的状态 buf 一直为空
DNAC 通信 连续请求,直到 buf 满(极端情况)
buf 部分为空,且有连续写请求。
配置 IR,DR
RSAC 模块中地址的译码
1.3 PCIE 模式下的控 IR 通路
制状态机 DR 通路
2、 2.1 资源访问 36 位数据的访问
完成三大调试 32 位数据的访问

第 62 页
国防科学技术大学研究生院工程硕士学位论文
功能 2.2 流水线控制 系统复位、流水线运行、单步、暂停等
2.3 性能统计 程序运行周期、分支命中次数等

5.6.2 验证结果分析

根据表 5.10 所描述的验证功能点,本文对基于 PCIE 的调试模式下的功能验证


结果进行分析如下所示:
(1)流水线控制

图 5.6 PCIE 调试控制流水线波形图


如上图 5.6 所示,ET 部件接收到来自 PCIE 的调试命令,根据对 CPU_Addr
进行检测,译码出仿真控制命令 20EA,从而控制流水线执行一个单步,如图中标
线处所示,BR_PCIE 值从 3C 前走一拍变为 40。

(2)36 位数据的读写

图 5.7 PCIE 调试 36 位数据写操作波形图


对 36 位数据写操作,如上图 5.7 示,ET接收到来自 PCIE的访问数据,
Wr_High4
为高,此时先写入 36 位数据的高 4 位,等待低 32 位传来后合并为 36 位数据,此
第 63 页
国防科学技术大学研究生院工程硕士学位论文

时 CIR_Write 有效,如标线 2 处所示,然后 ET 对该地址和数据执行对应的写操作。

图 5.8 PCIE 调试 36 位数据读操作波形图


对 36 位数据读操作,如上图 5.8 示,ET 接收到来自 PCIE 的读高四位数据地
址时,如标线 1 处所示,Rd_High4 为高,此时先向 PCIE 返回 36 位数据的高 4 位。
当读低 32 位数据时,如标线 2 处所示,ET 将直接向对应地址返回低 32 位数据。

(3)DNACBuff 中的 FIFO 读写

图 5.9 DNACBuff 中的 FIFO 读写波形图


如上图 5.9 示,ET 内部有一个深度与延迟路径大小匹配的 5 深度 FIFO。当
ET_DNAC_Bsy 有效时,此时 PCIE 不能够及时的收到该 Bsy 信号,仍然会向 ET
发送命令,而 ET 此时不能及时处理 PCIE 过来的命令,所以此时过来的读写的命
令会保存在 5 深度 FIFO 中。

第 64 页
国防科学技术大学研究生院工程硕士学位论文

5.6.3 覆盖率分析

图 5.10 覆盖率分析图

在设计中主要关注于 MD 模块的覆盖率,因为基于基于 PCIE 的调试模式下的


功能验证主要是关注于 DNAC 与 ET 的控制通路和数据通路的正确性与完备性,
而 ET 部件的整体验证本文已经在第 3.4 节进行了说明,在这里就不再赘述。
由图 5.10 得出,MD 域下三大模块的 block 覆盖率均实现 100%覆盖,且表达
式覆盖率基本上实现 99%以上、toggle 的覆盖率也实现 92%以上。通常情况下,由
于验证激励和时间的限制,一些信号如 PC 值等不会达到 100%的翻转,所以设计
中对于 toggle 的覆盖率不做特别的要求。
对于 expression 未覆盖到的情况,主要是某些代码本身两个信号之间存在着相
关性,从而某些信号满足的时候,另外那个信号就不能满足情况,使得整个表达
式出现无法覆盖的情况。

5.7 本章小结

本章分析了基于 PCIE 的仿真/调试部件的设计与实现,通过和基于 JTAG 平台


的仿真/调试部件的逻辑复用,实现了通过 PCIE 或 ARM 进行 DSP 芯片调试的设
计,由于是在系统时钟下进行调试工作,在完成仿真/调试的三大功能的同时,也
能够加快调试效率,在章节最后对这种 PCIE 模式下的仿真/调试进行了功能验证,
通过实践证明,基于 PCIE 的仿真/调试部件的设计达到预期的目标。

第 65 页
国防科学技术大学研究生院工程硕士学位论文

第六章 M-DSP 仿真调试的系统级验证环境

前面的章节中已经详细介绍了 M-DSP 仿真调试部件的设计与实现过程,且用


NC_Sim 模拟器在系统级对 ET 完成了的功能验证,但是由于需要很多批量读写验
证,所以单纯依靠 NC_Sim 仿真器进行验证难以保证验证的完备性,迫切需要搭
建一个方便控制的全芯片调试环境。目前大家常用的系统级调试与验证的方法主
要还是传统软硬件相结合的 FPGA 原型验证,但是 M-DSP 芯片规模较大,通常使
用的 FPGA 已经难以承载其庞大的硬件逻辑,且对于错误的定位麻烦,代码回归
验证繁琐,迭代的周期长,不利于对 RTL 级代码的维护。在本章,将设计一种新
型的基于 PLI 接口技术[42]的仿真调试平台的系统级验证环境,PLI 接口技术给
verilog 代码环境调用 C 语言函数提供了一种新的机制,它能够使 IDE 与仿真器两
个进程之间直接进行通信[43],能够随时对 RTL 级源代码进行修改,且能在仿真器
直接进行功能验证,方便快速,能够加快验证调试任务的进度。

6.1 传统的 FPGA 原型验证环境

随着各种验证方法学的出现,能够极大的加快 M-DSP 芯片验证工作的开展,


但目前处于主流地位的仍然是基于模拟的验证方法。如图 6.1 所示,是传统基于
FPGA 原型的调试仿真原理图。
调试主机 测试子板
J
U T 调试逻辑
I S JTAG A
软 B 仿真器 G FPGA
D 件
接 接
外部接口
E 驱

动 口
SDRAM 子板

图 6.1 FPGA 原型调试

M-DSP 开发过程中,进行全芯片系统级验证、调试的平台主要是用集成开发
环境(IDE,Integrated Developing Environment)。它通过软件支持,可以通过调
试主机来进行对芯片的调试工作,下面就来介绍设计中的 IDE 软件调试平台[44] [45]。
IDE 调试平台通过基于图形界面的方式对仿真/调试部件传送调试指令,从而
让仿真/调试的工作实现方便高效,它主要原理是为仿真验证环境提供各种调试仿
真命令的驱动函数[46] [47],如图 6.2 所示。

第 66 页
国防科学技术大学研究生院工程硕士学位论文

IDE调试平台

流水线运行:long M-DSP_RUN(long nDSP);


流水线暂停:long M-DSP_STOP(long nDSP);
流水线单步:long M-DSP_STEP(long nDSP);
系统复位:long M-DSP_RESET(long nDSP);
强制运行:long M-DSP_RUN_F(long nDSP);
读寄存器:long M-DSP_ReadREG(long nDSP,long RegAddr);
写寄存器:long M-DSP _WriteREG(long nDSP,long RegAddr,long RegData);

图 6.2 IDE 调试平台驱动函数

如上图 6.1 所示,是传统的 FPGA 原型调试原理图,FPGA 原型芯片通过 ET


的调试仿真接口与 JTAG 仿真器进行连接,然后 JTAG 仿真器通过国际上标准的
USB 接口与调试主机进行通信。这样用户可以通过调试主机上 IDE 调试的图形界
面开展对全芯片的调试工作。调试的工作原理是当用户在调试主机的 IDE 调试界
面中选择相应的调试按钮时,软件会调用底层软件的驱动函数,将其函数解析后
的调试指令传给 JTAG 仿真器,然后在 JTAG 的控制下,把调试指令串行的输出给
芯片的调试端口,最后芯片内的 ET 部件会对接收到的调试指令对芯片展开调试工
作。如果在调试过程中发现问题,则需要经过 RTL 逻辑推理,查找问题原因,修
改原始的设计代码,然后再回归最初的模拟验证,没有问题后再重新烧入 FPGA。
接着重新开始调试验证工作,不断的重复迭代,直到最后满足验证目标[48] [49]。
基于传统的 FPGA 原型调试验证方法,其优势在于它可以重复编程、能挂载
真实的外部 I/O 设备、且运行速度较快等等。但是,随着芯片规模的加大,通常
使用的 FPGA 已经难以承载其庞大的硬件逻辑,且对于错误的定位麻烦,代码回
归验证繁琐,迭代的周期长,不利于对 RTL 级代码的维护[50]。所以为了加快 M-DSP
调试验证的进度,在这里本文提出一种灵活的新型的软硬件联合的系统级验证环
境。

6.2 基于 PLI 接口的验证系统

6.2.1 Verilog PLI 接口简述

随着超大规模集成电路(VLSI)的发展,verilog 语言已经成为 ASIC 和 FPGA


设计领域中应用最为广泛的一种硬件描述语言,而 C 语言作为编程语言简洁紧凑、
灵活方便,所以可以用 C 语言在 verilog 中实现较为复杂的控制逻辑。
作为 Verilog 编程语言接口(Programming Language Interface ,PLI)为 verilog
代码调用 C 语言编写的函数提供了一种机制。Verilog PLI 是一个仿真接口,使用

第 67 页
国防科学技术大学研究生院工程硕士学位论文

PLI 接口,第三方公司和最终用户能够扩展 verilog 仿真器的功能,它提供一个使


得用户编写的 C 函数能够在 verilog 代码运行时间访问仿真数据结构的接口[51] [52]。
为了实现 PLI 的一些应用,C 代码必须能够 access verilog 仿真器(NC_Sim)
的内部数据结构,其读写操作如下图 6.2 所示。
NC_Sim仿真器

读操作 实例化模块、模块端口、模块通路、内部模块通路、
顶层模块、实例化Primitive、线网、寄存器、
Primitive terminals、参数、时序检查、
named events、整型变量、实数和时间变量
PLI
接口
写操作
模块通路、模块内部模块通路、实例化Primitive、
寄存器逻辑值、时序检验、逻辑值、sequential UDP

图 6.3 PLI 接口读写操作

Verilog PLI 接口是利用 C 语言来实现的,所以其具有 C 语言的特点:能够动


态的载入寄存器,数据类型丰富,处理各种数组和存储器数据方便,对过程能够
有效实现控制,而且代码质量高,程序执行效率高。在后面 M-DSP 仿真调试平台
的系统级验证环境的搭建中,本文将采用这种灵活的 PLI 接口方式来实现。

6.2.2 基于 PLI 验证系统的优势

随着超大规模集成电路在设计复杂度和硬件逻辑规模的不断增加,DSP 核的
数量也从单核走向多核[53] [54]
,所以对全芯片进行调试仿真的工作,传统的 FPGA
原型验证调试已经越来越难以胜任,而 M-DSP 处理器作为一款高性能浮点向量多
核处理器,如果用传统的 FPGA 原型验证调试,从时间开销还是验证效率上都不
是特别理想,所以需要一个新型系统级验证模型来克服下面的三个问题:
(1)由于 M-DSP 超大规模的硬件设计结构,所以现在的 FPGA 原型芯片不
再适用,而新型软硬件联合系统级验证方案能够很好的适应 M-DSP 处理器庞大、
复杂的硬件逻辑结构,而且 Verilog PLI 接口不需要制造一个 M-DSP 的 FPGA 原型
芯片,只需要编写对应 C 函数,就能够与仿真器进行通信,从而实现仿真调试功
能。
(2)准确的定位调试错误。基于传统的 FPGA 原型验证调试,对于芯片内部
的硬件逻辑用户是不可见的,这样当出现调试错误时,是很难准确定位的。而基
于 Verilog PLI 接口的新型验证方案,与仿真环境进行通信,能够直接的对 RTL 级
的代码进行查阅和修改,这无疑给验证人员提供了极大的方便。
(3)验证调试操作方便。随着芯片的硬件规模越来越大,芯片的验证难度也
在增加,这时候验证工作的时间和人员的成本开销是要在项目考虑之中的。基于
第 68 页
国防科学技术大学研究生院工程硕士学位论文

传统的 FPGA 原型验证调试,在发现错误之后,得修改设计代码,然后进行回归


验证,再重新烧入 FPGA,接着重新开始调试验证工作,不断的重复迭代,十分的
麻烦,容易耽误验证工作的开展。而基于 Verilog PLI 接口的新型验证方案,能够
随时对源代码进行修改,且能在仿真器直接进行功能验证,方便快速,能够加快
验证调试工作的进度。

6.2.3 基于 PLI 的验证系统的结构

在 6.2.2 节,了解到 Verilog PLI 是一个仿真接口,且 PLI 对仿真数据结构的访


问是动态的,能够在仿真运行的过程中进行访问,这样就实现了两个进程之间的
通信,这样就能够基于 PLI 接口开发一种全新的系统级验证调试的环境[55] [56]。将
传统的调试主机 IDE 的环境和 Verilog PLI 的仿真接口结合起来,就能够实现在 IDE
的图形界面中实现对全芯片的验证调试,而且这个过程中是不需要标准 JTAG 仿
真器和 FPGA 原型芯片以及连接线等 。当在 IDE 的界面中点击调试按钮时,对应
的底层软件驱动函数输出给 PLI,这种 C 函数能够在 verilog 代码运行时间访问仿
真数据结构,经过 PLI 接口对于仿真器(NC_Sim)的读写访问,从而实现了对芯
片 RTL 级代码的验证维护,其实质是通过 Verilog PLI 接口实现了 IDE 主机和
NC_Sim 模拟器两个进程之间的通信,数据通信结构如图 6.4 所示。

C 集
语 成 .
言 开
底 发
层 .


动 境

NC_Sim模拟器
C
共享数据栈 语


PLI数据通路 口

图 6.4 基于 Verilog PLI 技术的新型系统级验证环境


将传统基于 JTAG 仿真器的 FPGA 原型验证调试环境和基于 PLI 接口的软硬
件联合验证系统进行比较可以明显发现后者的优势所在。一是其对 RTL 代码可见,
便于调试,二是操作方便,能够显著提升调试仿真的效率。所以对于 M-DSP 处理
器的系统级调试仿真本文将采用基于 PLI 接口的验证系统。

第 69 页
国防科学技术大学研究生院工程硕士学位论文

6.3 基于 PLI 接口技术的验证模型

基于 PLI 接口的验证系统的原理图如下图 6.4 所示,由于 IDE 界面的软件环境


可以复用以前的版本,而 M-DSP 的调试/仿真部件已经设计好了,所以在本设计中
需要开展的工作就是根据本设计中用到调试/仿真命令,用 C 语言设计 PLI 接口。
集 成 开 发 环 境(IDE) 共 享 内 存
Input Queue Output Queue
调试驱动程序

C子 程 序
调 试 读写 PLI 接 口

测试激励
ET

C子程序
Task.v

寄存器
存储器 行
运行
停止
单步
断点

YHFT-M DSP
调试/仿真平台

图 6.5 基于 Verilog PLI 技术的验证模型原理图


从图 6.5 可以知道,在集成开发环境(IDE)中,开发人员可以实现对 M-DSP
的流水线控制,如流水线的运行、单步、暂停;断点的操作包括软件断点和硬件
断点;还有对 DSP 寄存器的读写及存储空间的访问。而这些调试仿真命令的实现
是通过底层软件的驱动函数经过 PLI 接口后传给 DSP 的 ET 接口,ET 将拿到的调
试命令对 DSP 展开调试工作。而当 ET 接收到读命令后,会将对应的读数据返回
给 IDE 界面,这样用户就能在调试界面上实时掌握整个 DSP 的运行情况了。而在
整个调试仿真过程中两个进程之间的数据交换,是利用共享缓冲区来实现的,这
个在下面会进行介绍。

6.3.1 共享内存区

前面说到用于两个进程之间进行交互的共享缓冲队列是一块特别留出来的内
存区。两个进程任何一个进程有了数据更新的话,另外那个进程能够及时的得到
数据的更新,从而实现了 IDE 界面和 NC_Sim 仿真器两个进程之间的通信[57] [58]。
这块共享内存区实质是两个 FIFO,它们的位宽和深度都是一样。FIFO_1 用于
保存输入信号 Inputqueue,即保存 IDE 发送的仿真调试指令,FIFO_2 用于保存输
出数据 Outputqueue,即保存着给 IDE 的仿真调试的返回数据内容。而对于 PLI 接
口来说,IDE 对共享内存的写操作却是它的读操作,而 PLI 的写操作却是 IDE 的
读操作,且它们的读写是同步的。其数据通信图如图 6.6 所示。

第 70 页
国防科学技术大学研究生院工程硕士学位论文

共享内存
写 INPUTQUEUE 读
I D
D S
E 读 写 P
OUTPUTQUEUE
深度:32

图 6.6 进程间共享内存数据的通信图

用共享缓冲队列的方式代替了传统的 JTAG 仿真器硬件的连接, 这本身就是


这种基于 PLI 接口的新型系统级验证模型的一大亮点,能够提高调试的效率。

6.3.2 同步读写指针

在上一节的分析中,要求两个进程之间对于共享内存的读写访问要求是同步
的,然而两个进程之间读写速度并不是完全一致的,这样很容导致调试数据紊乱,
从而使新型系统级验证系统崩溃,所以这里需要设计一种同步机制,能够使 PLI
准确拿到 IDE 写的数据,而 IDE 也能够拿到返回值。在设计中,对于每一个读/
写队列,可以用队列的头/尾指针来定位数据的位置,并且让两个进程间读写指针
实现同步[59] [60]。
在这里读写指针两者是相对而言的,如上图 6.6 所示,读指针,是指当 DSP
读取调试界面 IDE 输出到 Inputqueue 缓冲队列中调试函数包的头指针和尾指针,
以及当调试界面 IDE 读取 DSP 返回到 Outputqueue 缓冲队列中的数据包的头指针
和尾指针。写指针与读针类似的,这里就不再赘述。
*Ptr+2
*Ptr+1
*Ptr

*Front
*Rear

Data_struct Field

图 6.7 共享缓冲队列的结构划分图
其中,*Ptr:共享内存的首地址;*Front:队列的头指针;*Rear:队列的尾指
针。
为了让两个进程间读写指针实现同步[63],本设计中将共享内存区内部划分成
三块,如图 6.7 所示,分别用来存放传输数据包、队列的头指针以及尾指针,这样,
如果要读取某一缓冲队列中数据的时候,就以保存的队列头指针内容作为索引去
读取共享缓冲队列中的数据包。

第 71 页
国防科学技术大学研究生院工程硕士学位论文

6.3.3 M-DSP 仿真调试的系统级验证环境

前面对基于 PLI 接口的验证系统的原理进行了说明,下面就来介绍在本次设


计中用到的这个基于 PLI 接口技术、通过共享缓冲区进行通信连接 IDE 调试界面
与 M-DSP 仿真调试部件的软硬件联合系统级验证环境。其工作过程本文就以 IDE
调试界面对 ET 的读操作和写操作进行说明,下面以读写标量寄存器 SPE 为例。
读操作:对 ET 可访问资源的读写可以很直观的在用户界面上进行,在 M-DSP
仿真调试平台的系统级验证环境中的工作原理如下:
(1)当开发人员点击了 IDE 软件调试界面中的寄存器选项后,底层软件驱动
函数将发出对芯片中 SPE 寄存器的读命令,并将其写入到共享内存区 Inputqueue
的缓冲队列中[61] [62]。
(2)共享内存区中的数据,对于两个进程来说,都是可见的,所以 PLI 接口
会将拿到的 C 函数进行解析成 ET 的输入信号。
(3)ET 部件在收到外部调试激励后,会生成对内核中 SPE 部件的读操作相
关信号(ET_ReadSPE、ET_AddrSPE)。
(4)ET 部件将读返回信息(SPE_DataET)又经过共享缓冲区传给 IDE 软件
调试界面。
需要说明就是,当用户在调试界面点击寄存器的图标的时候,IDE 实际是将对
所有的寄存器的读访问发送出去,上层软件将控制 ET 批量返回 DSP 核内各个寄
存器的数据。从而用户在 IDE 的用户界面中将读到所有核内寄存器的当前值。
写操作:该软硬件联合的验证环境对于寄存器的写操作过程是非常方便的。
(1)在 IDE 用户界面上进行,只需要在对应的寄存器后面的数值框中输入要
写的数据,IDE 软件的驱动函数将发出对芯片中 SPE 寄存器写命令(包括写地址
命令,写数据等)写入到共享缓冲区 Inputqueue 的缓冲队列中。
(2)在共享内存中的内容对于另外那个进程(如 NC_Sim 模拟器)来说是可
见的,所以 PLI 接口会将拿到的数据进行解析成 ET 的激励信号。
(3)ET 在拿到外部调试激励后,会生成对 SPE 部件的写操作相关信号
(ET_WriteSPE、ET_AddrSPE、ET_DataCPU),从而完成对标量寄存器的写操作。
通过实践可以看到,在系统调试过程中,错误定位方便,易于对 RTL 级代码
进行维护,能够显著提高调试效率。

6.4 多核加速模型

随着 DSP 走向多核化,越来越需要考虑到多核的特殊性,所以需要对多核的
验证系统需要进行专门研究,特别是多核验证过程中仿真效率的考虑。

第 72 页
国防科学技术大学研究生院工程硕士学位论文

6.4.1 设计原理

Mx-QMBase 为 M-DSP 的双核同构处理器[64][65]。为了提高系统的仿真速度,


本文根据前面介绍的 PLI 接口技术,提出一种可加速多核芯片仿真速度的模拟环
境[66]。
Mx-QMBase 模拟环境的主要特点有:
(1)3 个 NC_Sim 模拟器,其中 NC_Sim0、 NC_Sim1 两个模拟器分别仿真
两个单核 M-DSP,另一个用于仿真片外访存接口 EMIF;
(2)单核芯片内部 L1P、L1D、DMA 与 EMIF 之间的数据交互通过共享内存
实现;
(3)数据共享机制是通过位宽、深度一致的共享缓冲区来实现。
(4)在系统级验证、调试多核全芯片更高效,并且,不必通过 FPGA 直接在
RTL 级实现源代码维护。

6.4.2 队列类型复用

单核与外部存储接口存在数据通道的有 L1P、L1D、DMA 三大部分,每个功


能部件与 EMIF 之间经两个共享队列缓冲(INPUTQUEUE 与 OUTPUTQUEUE),
则单核与 EMIF 的通信需要 6(3*2)个队列,3 种数据类型,为 Data_Struct 自定
义数据结构体(三部分数据类型各不相同),因此,双核互连则需 12 个缓冲队列,
为了减少程序复杂度,单核内的三种数据结构队列复用[67]。复用方法如下:
#define QUEUE_DEFINE(name,type)
struct name{
struct type* data_arr;
int *front;
int *rear;
int max_size;
}

#define InputQueue QUEUE_DEFINE(InputQueue,InputData)


/*定义 InputQueue 类型队列,容纳 InputData 类型数据结构*/

#define OutputQueue QUEUE_DEFINE(OutputQueue,OutputData)


/*定义 InputQueue 类型队列, 容纳 InputData 类型数据结构*/

6.4.3 多核加速效率分析

在多进程模拟环境下,不同测试激励的仿真效率不尽相同。如果在数据通信
占主体的情况下,此时通信效率折损,主要是因为进程间的相互通信本身就耗费
了时间;然而,在内核运算占主体时,仿真效率迅速提升,这是由于在各个模拟
器中仿真的单核处于高速运算状态,因此由进程间通信而耗费的时间就显得微不
第 73 页
国防科学技术大学研究生院工程硕士学位论文

足道,此时多核加速的效果就能够很好体现。

6.5 M-DSP 仿真调试的系统级验证实践

本小节根据设计的 M-DSP 仿真调试平台的系统级验证环境,对 M-DSP 处理


器进行调试仿真验证。而前面的第三章、第四章和第五章在 NC_Sim 仿真器中已
经对 ET 进行了功能验证,在这里将从基于 PLI 接口的 M-DSP 仿真调试平台进行
调试仿真的验证。相对于在 NC_Simz 中编写各种 ET 的测试激励,过程复杂且调
试的完备性也难以保证,这种新型的仿真调试平台无疑展示了它的优越性。需要
说明的是,在下面的系统级验证都是在 M-DSP 处理器的单核中进行的。

6.5.1 调试流水线

在用户的图形界面,也就是软件集成开发环境 IDE 上,对于流水线控制的操


作主要有复位(Reset)、运行(Run)、单步(Step)、暂停(Halt),IDE 对应
的解析数据包为:复位指令,驱动函数解析成(50'h143f_ffffffff,50'h147f_ffffffff)、
运行指令,驱动函数解析成(50'h093f_ffffffff,20'h20d2,50'h083f_ffffffff)、单
步指令,驱动函数解析成(50'h093f_ffffffff,20'h20ea,50'h083f_ffffffff)、暂停指
令,驱动函数解析成(50'h093f_ffffffff ,20'h20a8 ,50'h083f_ffffffff)发送给数
据共享堆栈,再经过 PLI 接口传给 ET 部件,ET 根据接收到的仿真指令,执行相
应的调试仿真操作,从而实现对流水线的仿真调试。下面主要是对这几种流水线
控制命令进行验证,调试界面如下图 6.8 所示。

图 6.8 ET 控制流水线的 IDE 界面调试图

第 74 页
国防科学技术大学研究生院工程硕士学位论文

如上图中所示,当用户需要对流水线进行控制的时候,IDE 底层驱动函数经
PLI 接口将对应的控制命令发送给 ET 部件,ET 将执行对应的控制流水线操作,
用户可以直接在 IDE 用户界面中,点击流水线控制图标进行调试。如终端中对应
的命令所示,当点击“运行”图标的时候,IDE 环境会将包含有“20d2”的运行仿
真命令 JNI_RUN 函数命令通过共享数据堆栈发往仿真环境中的 ET 部件,然后接
着发出包含读状态的 JNI_Stat 函数命令,对流水线情况进行监视,直到用户点击
“暂停”命令或者遇到硬件断点、软件断点,流水线才会暂停下来。对于复位、
单步、暂停等操作在这里就不再赘述。

6.5.2 可访问资源的读写

在 IDE 图形调试界面上,对 ET 可访问资源的读写可以很直观的在用户界面上


进行,例如对 DSP 的控制寄存器进行读写访问时,点击 CR 图标后,在界面中将
看到对应各个控制寄存器,包括 SCR、VCR、IER 等等。当选择 IDE 界面中的寄
存器选项后, 底层软件驱 动函数将 发出对芯 片中所有可 访问寄存 器的读命令
(50’h3ff4_xxxxxxxxx),xxxxxxxxx 代表各个寄存器在 ET 保留空间分配的映射
地址,IDE 环境将控制 ET 批量读写访问并返回 DSP 核内各个寄存器的数据。从
而用户在 IDE 的用户界面中将实时读到核内寄存器的值。而对于寄存器的写操作
也是非常方便,只需要在对应的寄存器后面的数值框中输入要写的数据,写地址
命令(50’h3ff3_xxxxxxxxx),写数据命令(50’h3fe0_xxxxxxxxx),软件驱动函
数将会把解析后的写操作指令输出给 ET 部件,其数据流过程与图 6.4 描述的相同。
下面对 ET 可访问资源的读写进行验证,调试界面如下图 6.9 和图 6.10 所示。

图 6.9 ET 读写寄存器的的 IDE 界面调试图


如终端中对应的命令所示,当用户需要访问寄存器的时候,IDE 底层驱动函数

第 75 页
国防科学技术大学研究生院工程硕士学位论文

经 PLI 接口将对应的读写命令发送给 ET 部件,ET 将对应的调试结果传回给 IDE


用户界面,用户可以直接在 IDE 用户界面中,直接对寄存器进行赋值,如上图中
所示,当对标量寄存器 R0 寄存器写 0x8 的时候,IDE 环境会将包含写地址和写数
据的 JNI_WRITEREG 函数命令通过共享数据堆栈发往仿真环境中的 ET 部件,然
后接着发出包含读地址的 JNI_READREG 函数命令,把 R0 寄存器中的数据返回给
IDE 环境,从而完成对寄存器的读写操作。

图 6.10 ET 读写内存的调试界面图
在对全芯片环境进行调试的过程中,经常会需要频繁的对内存进行访问,而
在 NC_Sim 的仿真环境中是很难直观清晰快速的查看内存中的数据的。而在本文
设计的这个软硬件结合的新型系统级验证环境中,可以很方便的实现对内存的读
写操作。如图 6.10 所示,在内存对应的面板中,调试人员可以在 address 栏中输入
需要访问的内存地址,然后按下回车键,此时 IDE 底层驱动函数经 PLI 接口将对
应的读写命令发送给 ET 部件,ET 再将对应的读写结果传回给 IDE 用户界面。用
户可以直接在 IDE 用户界面中,直接对内存数据进行赋值,如上图中所示,当对
地 址 0x000000070 改 写 数 据 的 时 候 , IDE 环 境 会 将 包 含 写地 址 和 写数 据 的
JNI_WriteMem,et_WriteMem_C 函数命令通过共享数据堆栈发往仿真环境中的 ET
部件,ET 部件完成最终的写内存操作,然后 DE 环境接着发出包含读地址的
JNI_ReadMem,et_ReadMem_C 函数命令,将内存中的当前值进行读返回,从而完
成对内存空间的读写操作。

6.5.3 系统性能统计

在 IDE 软件图形界面上,对于 DSP 内核的事件统计的操作很简单,用户只需

第 76 页
国防科学技术大学研究生院工程硕士学位论文

要选中想要统计的事件名,如 CYCLE、DPStall、NOP 等,然后选中对应的事件统


计使能,在本设计中,一次调试过程中最多支持对两个事件的性能参数统计。当
选中相应事件统计的时候,相当于是对 ET 进行写寄存器操作,即发送写地址的调
试命令(50’h3ff3_xxxxxxxxx),写数据命令(50’h3fe0_xxxxxxxxx),驱动函数将
会把解析后的写操作指令(包括写事件选择寄存器和写事件使能寄存器)输出给
ET。当调试系统放开流水线之后,事件统计开始工作,当流水线被调试系统暂停
之后,上层软件将控制 ET 返回事件计数寄存器的数据,也就是向 ET 发送读寄存
器的操作。从而用户可以很方便的从 IDE 图形界面上查看性能统计的结果,对应
通信过程与图 6.4 描述的相同。下面将对 M-DSP 芯片的事件统计进行验证调试,
其 IDE 软件界面如图 6.11 所示。

图 6.11 性能统计的调试界面图
如上图所示,当需要进行系统性能统计时,调试人员可以在性能统计窗口中
选择需要进行统计的参数,
IDE 底层驱动函数经 PLI 接口将对应的性能统计命令发
送给 ET 部件,ET 将执行对应的操作。如上图终端中对应的命令所示,当点击“Set”
按钮的时候,IDE 环境会将包含性能统计寄存器设置函数命令 JNI_WRITEREG 通
过共享数据堆栈发往仿真环境中的 ET 部件,从而完成性能统计的设置。然后当流
水线运行的时候,ET 将会统计对应的性能参数值,在流水线暂停的时候,IDE 环
境会向 ET 发出读性能参数计数寄存器器的函数命令 JNI_READREG,从而将性能
统计结果返回至 IDE 界面。如上图中所示,用户可以方便快速的知道该段程序运
行中,程序总共执行包个数为 1398,L1P 读命中次数为 272,从而便于对程序进行
调试和优化。

第 77 页
国防科学技术大学研究生院工程硕士学位论文

6.5.4 软件断点和硬件断点

对流水线的控制常用操作的还有断点,在 IDE 图形调试界面上,有专门的断


点管理目录,断点包括软件断点和硬件断点,用户可以自主选择使用硬件断点还
是软件断点,不过硬件断点由于硬件开销的缘故,总共只有 8 个。前面在第四章
中对软件断点已经进行详细的介绍 ,不过当时是基于模拟的方法(NC_Sim)对
软件断点进行功能验证的,在这里将用基于 PLI 的软硬件协同验证的方法的进行
系统级的验证。

图 6.12 软件断点与硬件断点操作的调试界面图
用户可以直接在 IDE 图形界面上调试,设置断点时,当选择设置断点后,可
以在汇编激励中对应的指令前点一下,就表示设置好断点。对于软件断点设置,
此时软件需要多次的对流水线进行读写,包括读流水线各站的 PC,DP 站取指包
无效 16 位指令段个数和写入断点标志位等,软件驱动函数将会把解析后的操作指
令输出给 ET。而对于硬件断点的设置,软件只需对相应的硬件断点寄存器和硬件
断点使能寄存器进行写操作,对于寄存器的写操作和前面类似,在这里就不再赘
述。对断点的取消和设置类似。下面将对 SWBP 断点和 HWBP 断点进行验证,界
面如图 6.12 所示。
当用户需要对流水线进行控制的时候,硬件断点和软件断点是常用的手段,
如上图所示,当设置软件断点时,IDE 底层驱动函数经 PLI 接口将对应的控制命令
发送给 ET 部件,ET 将执行对应的软件断点操作,用户可以直接在 IDE 用户界面
中,点击对应汇编指令 PC 值,右键选择软件断点即可。如上图终端中对应的软件
驱动函数命令,当对 PC 值为’h000000010 的指令设置成 SWBP 断点的时候,IDE
环境根据指令在流水线中的位置,会将包含有 JNI_SetSWBP、et_ReadMem_C、
et_WriteMem_C 的软件断点设置函数命令通过共享数据堆栈发往仿真环境中的 ET
第 78 页
国防科学技术大学研究生院工程硕士学位论文

部件,从而完成软件断点的设置。然后当运行的时候,ET 检测到软件断点便会使
流水线停在 PC 值为’h000000010 的位置,同时完成指令的恢复工作。对应的软件
断点和硬件断点可以在断点管理目录中进行管理。

6.6 本章小结

本章设计了一种通过 PLI 接口来实现进程间通信技术的系统级验证系统,并


结合 IDE 用户调试图形界面与基于 Linux 环境的 NC_Sim 模拟仿真器,对 ET 的三
大功能进行了软硬件联合的系统级验证,达到预期的效果。通过实践证明,基于
PLI 的软硬件新型协同验证方案对于 RTL 级全芯片上的调试仿真具有重大意义,
在以后的调试仿真系统级验证工作中值得采用。

第 79 页
国防科学技术大学研究生院工程硕士学位论文

第七章 论文总结及展望

7.1 论文总结

本人在三年的硕士学习生活中,有幸参与了 YHFT-Matrix 系列高性能处理器


的研发工作,包括其高性能 64 位浮点向量多核处理器及其 32 位化的设计和验证
工作。在项目组中主要负责分支部件的设计与验证,中断和异常部件的设计与验
证,仿真/调试部件的设计与验证以及以上功能模块的优化工作。
本文首先介绍了 DSP 芯片技术的发展包括 DSP 芯片的发展历史和高性能 DSP
芯片主要特点,并简单分析了目前主流高性能处理器的发展现状,以及对仿真/调
试部件的设计相关的国内外研究现状进行了分析。接着对 M-DSP 的体系结构进行
了介绍,分析指令集的特征和指令流水线的设计结构,并在此基础上,提出了本
文的仿真/调试部件的设计方案。
从 M-DSP 体系结构出发,考虑 DSP 的整体性能,完成了基于 JTAG 标准的仿
真/调试部件的设计与实现,这个在第三章中进行了详细介绍,本文设计的仿真/调
试部件能够有效的实现对芯片内核进行调试验证,包括实现对指令流水线的控制、
DSP 资源的访问和事件性能参数统计等。SWBP 断点的设计是本文设计的一大亮
点,因为 M-DSP 采用的是 16/32 位指令集,所以软件断点的设计需要考虑到两者
指令长度的差异,采用特殊指令替代和设置断点记号相结合的方式,加上对指令
派发部件进行特别设计与优化,完成了对指令流水线精准的 SWBP 断点控制。
本文设计中的另外一大亮点,便是提出了基于 PCIE 的仿真/调试部件的设计
方案。通过和基于 JTAG 的 ET 部件的逻辑复用,实现了通过 PCIE 或 ARM 进行
DSP 芯片仿真/调试工作的设计,为 M-DSP 复杂的全芯片仿真/调试工作提供了一
种新的方式,由于 PCIE 的仿真/调试是在系统时钟下进行的,工作效率得到了大
大的提升,使验证工作更加方便和精确。
随着 DSP 性能的不断调高,设计的硬件规模和复杂程度越来越大,验证工作
也成为重头戏。分析传统的 FPGA 原型验证环境的不足之处,以及看到基于 PLI
接口的验证系统的优势,从而提出了一种新型的基于 PLI 接口技术的软硬件协同
验证模型,并利用设计的 M-DSP 新型软硬件联合系统级验证环境完成了 DSP 芯片
功能验证。
经过全面系统的验证,M-DSP 仿真/调试部件功能正确,达到了预期的设计目
标要求,并在全芯片的调试工作中起到了很大的帮助。

第 80 页
国防科学技术大学研究生院工程硕士学位论文

7.2 工作展望

在撰写本文的过程中,高性能浮点向量双核处理器 M-DSP 的设计工作正在有


条不紊进行着,距离 M-DSP 流片的日期也渐渐的近了,现在最重要的就是做好全
芯片系统级的验证与调试工作。随着对 M-DSP 的研究工作的不断深入,积累的设
计经验也在不断加深,而面对快速发展的 DSP 市场,要求其处理能力的更强,运
算速度更快,功能更加全面,功耗更低等,所以在以后的设计工作中,应该特别
注重下面几个方面的创新:
1、由于新兴的移动互联网络将结合物联网在通信、电子商务、智能便携设备
等多领域发挥作用,这必然要求 DSP 的综合性能更为强大,所以对于 ET 部件的
优化也是研究工作的一个重要考虑。
2、由于现在的 SOC 技术的发展和成熟,DSP 处理器从单核到多核,DSP 的
核越来越多,调试仿真的任务也越来越重。针对本文介绍的基于 PLI 接口的新型
单核调试仿真验证系统,为了提高调试仿真的速度,在以后的设计中可以考虑采
用一种多核芯片调试仿真的可加速模拟环境。
3、ET 部件的软件断点的设计容易形成关键路径,由于软件断点需要进行指
令的恢复,而断点恢复的硬件逻辑会加重各部件的时序违反,从而影响 DSP 的整
体性能。所以在以后设计中,是否可以采用一种更为高效的软件断点机制,这是
以后 ET 研究工作的一个重要方向。
4、随着 DSP 芯片对功耗的考虑越来越重视,所以在以后设计中可以加入更多
的低功耗技术的考虑。
5、随着设计的硬件规模和复杂程度越来越大,验证工作难度加大,保证验证
的完备性和功能的正确性是相当关键的,而在 M-DSP 仿真/调试部件的设计中,采
用的验证方式还是传统的基于模拟的方法,需要靠验证人员穷举所有的功能点和
各种恶劣的情况,这样验证的完备性很难保证,容易出现考虑不全的地方。而采
用形式化的验证方法能在较短时间内进行大量的功能点的验证,这样有利于进行
回归验证。所以在以后设计工作中,项目小组可以结合多种验证方法来开展工作,
不但能够减轻验证人员的负担还能够保证验证的完备性。
综上所述,在以后的工作和学习中,设计人员应该时刻保持积极的学习态度,
让自己能够紧跟新的思路、新的思想,总结经验和教训,期望能有所突破,从而
形成自己独特的风格。

第 81 页
国防科学技术大学研究生院工程硕士学位论文

致 谢

在这段青葱的岁月中,在这个彷徨的年纪里,在这个春暖花开的季节,在研
究生论文即将完成之际,佳帅在此要向那些给予我指引、关心、爱护和帮助的老
师、同学、家人及朋友们表达我那赤裸裸的感谢和诚挚的祝福。
首先,要衷心的感谢我的导师刘仲老师。能够成为刘老师的学生是一种特别
缘分,踏遍心田的每一角,踩透心灵的每一寸,满是对您的谢意。刘老师学识渊
博、思想深邃、视野开阔,对学生认真负责,诲人不倦。无论是学习上、工作上,
还是平时的生活中,刘老师给予了我真诚的帮助和无私的指导。刘老师品行高尚,
为人和蔼,平易近人,总是能在我的人生道路上为我答疑解惑,给我指引方向,
使我受益终生。我衷心的感谢刘老师,真诚地祝愿刘老师身体健康,工作顺利,
阖家幸福快乐!
万老师无疑是相当帅气的一位老师,那种泰山崩于前而色不变,麋鹿兴于左
而目不瞬的自信和冷静是相当迷人的。能够来到万老师的麾下实在也是我的幸运,
有点呆萌的我经常给万老师添麻烦,但一看到万老师那淡定的目光,总能有一种
清风拂面的超快感。万老师渊博的学识,严谨的工作态度,运筹帷幄的处事风格,
冷静分析问题的思维能力,对我的学习和工作都产生了积极影响,为我树立了新
时代的新好男人的标杆。特别的感谢送给万老师,感谢对我工作上细心的帮助和
耐心的答疑。衷心的祝愿万老师工作顺利,身体健康,阖家幸福!
王慧丽师姐是项目组公认的一枝花了,这个是没有争议的。我想一定是我一
直以来积累了足够多的好运气,才能遇到一个这么好的师姐。记得刚接触师姐的
时候,我那小脸蛋还经常会害羞得红彤彤的。师姐是一个绝对的女中豪杰,平时
的各种问题在她那里那都不是事儿,从师姐那里我学到了很多很多,因为和优秀
的人相处,让平凡的我也有了点儿亮光。真心真意的谢谢慧丽师姐,祝师姐幸福
快乐,青春永驻!
在项目组里,最萌的有李睿婷师姐,最搞笑的有田甜师兄,最英俊的有曾思
师兄,最开朗的有彭浩师兄,最成熟稳重的算陈俊杰师兄,杨柳师兄是来我们 413
最多的一个。每一个人都是那么的有个性,有特色,给我在项目组里的学习和生
活带来了无限地快乐和帮助。
感谢陈书明教授,感谢敬爱的陈海燕老师,彭元喜老师,陈胜刚老师,王耀
华老师,马胜老师,衷心感谢你们给予我的诸多建议、帮助和支持,毫无疑问的,
各位老师是我们眼中最可爱的人。
感谢学院领导,感谢学员六队政委贺毅、队长蔡威、以及 12 级全体同学,特

第 82 页
国防科学技术大学研究生院工程硕士学位论文

别是我班上的那几位和实验室的兄弟姐妹们,平时给你们添麻烦了,感谢大家对
我的包容与支持。
特别感谢黄天颖、武祥、欧阳东方、何辉、周金鹏、刘萍、杨雨琪、李星、
欧阳雄姿、王继初、刘思妤、贺丹妮、张洁、聂海流、舒日盼、胡蓉、刘甜甜、
聂文婕等众好友一直以来的支持与陪伴,为我的生活增添了许多色彩。
最后特别感谢我的家人一直以来对我的支持与付出,如大海般的亲恩,小帅
无以回报!
感恩身边的每一个人,并真诚地祝愿大家永远幸福、快乐!

第 83 页
国防科学技术大学研究生院工程硕士学位论文

参考文献

[1] National Institute of Standards and Technlogy (NIST), Department of


Commerce,Software errors cost U.S. economy $59.5 billion annually, NIST
News Release 2002-10, 2002
[2] 许邦建,孙永节,唐涛. DSP 算法与体系结构实现技术[M]. 北京:国防工业出版
社. 2010.1.
[3] 陈书明,李振涛,万江华等. “银河飞腾”高性能数字信号处理器研究进展,计算
机研究与发展,2006,43(6):993-1000.
[4] Modern Processor Design:Fundamentals of Superscalar Processors [M].
BEIJING:Publishing House of Electronics Industry.2004.5
[5] Texas Instruments Incorporated. TMS320C55x DSP Programmer’s Guide
SPRU376A [Z]. 2001.
[6] Joseph A Fisher Trace Scheduling: A Technique for Global Microcode
Compaction IEEE Transactions on computers, vol c-30 no 7 pages 487-490 july
[7] IEEE Standard Verilog:Hardware Description Language.Design Automation
Standards Committee of the IEEE Computer Society,Approved 17 March 2001.
[8] Debug of ARM.Based systems using Embedded ICE.Ashling Microsystems
Ltd.2001.
[9] Michael D.Ciletti.Advanced Digital Design with the Verilog HDL.
BEIJING:Publishing House of Electronics Industry.2005.1.
[10] Michael L.Bushnell ,Vishwani D.Agrawal.Essentials of Electronic Testing for
Digital,Memory&Mixed-Signal VLSI Circuits[M].BEIJING:Publishing House of
Electronics Industry.
[11] Hu Xue-Liang,Zhang Chun,Wang Zhi- hua.An Overview of JTAG
Technology:Development and Application.Microelectronics.2005,35(6):624-630.
[12] Lee D. Whetsel, Baher S. Haroun, Brian J. Lasher, Anjali Kinra. Selecting
Different 1149.1 TAP Domains from Update-IR State. United States Patent. US
7058862 B2, 2006.
[13] BartVermeulen,Sandee PKumar Goel,Design For Debug:Catehing Design
Ermrsin Digital Chips,IEEE
[14] TMS320C6000 DSP Designing for JTAG Emulation Referenee Guide,
www.ti.eom
[15] Tim Loveless. Techniques of multiple device debugging using JTAG, The
Complementory Magazine to www.Embedded-Control-Europe.com, March 2004.
[16] Jan M.Rabaey,Anantha Chandrakasan.Digital Integrated Circuits A Design
Perspective,Second Edition[M].BEIJING:Publishing House of Electronics

第 84 页
国防科学技术大学研究生院工程硕士学位论文
Industry.2010.11.
[17] Neal Stollon. Multi-core Embedded Debug for Structured ASIC Systems.
http://www.fs2.com/pdfs/DesignCon_FS2.pdf
[18] Mark Glasser. Advanced Verification Methodology AVM. Mentor Grap hics
Corporation, 2006:28-96
[19] Ravi Budruk,Don Anderson,Tom Shanley.PCI Express System Architecture.
BEIJING:Publishing House of Electronics Industry.2005.11.
[20] V.D.Agrawal,C.R.Kime,K.K.Saluja.A Tutorial on Built-In Self- Test,Part1:
Principles Design & Test of Computers.IEEE, Vol.10, No.1,March,1993:73-82.
[21] Harry Bleeker,Peter van den Eijinden,Frans de Jong.Boundary-Scan Test:A
Practical Approach.Kluwer Academic Publishers,1993.2.
[22] ARM DUI 0322A, RealView Debugger Version 3.0 Trace User Guide,
http://www.arm.com, 2006
[23] ARM Software Development ToolKit Version 2.50 User Guide, ARM Limited
Inc. , 1998
[24] Rob Oshana. Testing and Debugging DSP Systems. www.embedded.com, 2007.2
[25] Wang Danghui, Gao Deyuan, Li Tao, Breakpoint Debugging Mechanism For
Microprocessor Design, IEEE
[26] A.Molina, O.Cadenas. Functional Verification: Approaches AND Challenges.
Latin American Applied Research, 2007.3, Vol.33, No.1: 65-69
[27] 李文,王恒才,唐智敏.一种 CPU 芯片硬件验证调试平台的设计与实现[J]计算
机研究与发展.2003:40(6):848-888.
[28] 张新芳. “银河飞腾”DSP 片上调试结构的设计与实现. 硕士学位论文. 国防
科技大学. 2006.6.
[29] Standard for a Global Embedded Processor Debug Interface IEEE-ISTO.1999
[30] Larry Mittag. Software Debug Options on ASIC Cores, [OL]. Available at :
www.embedded.com/97/feat9701.htm, 2005.6.7
[31] Debug of ARM.Based systemsusing Embedded ICE.Ashling Microsystems Ltd.
2001
[32] Ciaran MacNamee, Donal Heffernan, Emerging on-chip debugging techniques
for real-time embedded systems, COMPUTER & CONTROL ENGINEERING
JOURNAL DECEMBER 2000
[33] IBM. CodePack PowerPC Code Compression Utility User's Manual Version3.0.
1998
[34] Himanshu Bhatnagar.AdvaneedAsieChiPSynthesis:UsingSynoPsysDesign
ComPilerPhysiealComPilerandPrimetime.SPringer.2002
[35] K.D., maier, ON-Chip Debug Support for Embedded Systems-On-Chip, IEEE
[36] SynoPsys.DesignComPllerUserGuide.www.synoPsys.com.200
第 85 页
国防科学技术大学研究生院工程硕士学位论文
[37] TMS320C6000 Board Design: Considerations For Debug, Literature Number:
SPRA523
[38] Morten Zilmer, Non-intrusive On-chip Debug Hardware Accelerates
Development for MIPS RISC Processors, MIPS Inc., 1999
[39] Revill Geoff. Designing Complex Embedded Systems without an Emulator,
[OL].Available at: www.realtime- info.com, 2005.6.8
[40] ARM7 TDMI Debug Architecture, ARM limited Inc., 2000
[41] IEEE Std 1149.1-2001. IEEE Standard Test Access Port and Boundary-Scan
Architecture. IEEE-SA Standards Board, 2001.6
[42] Clifford E.Cummings. Simulation and Synthesis Techniques for Asynchronous
FIFO Design. Available at: www.sunburst-design.com, 2002.3
[43] David J.Frank, Ruchir Puri, Dorel Toma. Design and CAD Challenges in 45nm
CMOS and beyond. Proceedings of the IEEE/ACM international conference on
Computer-aided design, ICCAD '06, 2006
[44] 陈海燕,郭阳,刘祥远,陈吉华. 集成电路计算机辅助设计与验证实践 [M]. 长
沙:国防科技大学出版社. 2010.10.
[45] Y.WuandP.MaeDonald.TestingASICswithmultipleidentiealeores.proe.
ComPuter-AidedDesign,Mareh200
[46] Chris Spear.SystemVerilog for Verification[M].北京:科学出版社,2009:2.
[47] Markus Levy, Multi-core technology: trends and design challenges, EEMBC and
The Multicore Association, 2006.2
[48] TI Inc., MPC DataRoadshow Catalog OMAP Platform and OMAP5910,
www.omap.com/rd/omap5910, 2002.10
[49] Gary Swoboda, Combat Integration's Dark Side With New Development Tools,
http://www.elecdesign.com/, 2003.9
[50] Gary Swoboda, Design View / Design Solution: The History Behind Vanishing
Visibility, http://www.elecdesign.com/, 2003.6
[51] Prakash Rashinkar, Peter Paterson, Leena Singh. System-on-a-Chip Verification
Methodology and Techniques. New York: Kluwer Academic Publishers, 2002
[52] Steven McLaughlin. Introduction to HCS08 Background Debug Mode. Freescale
Semiconductor Application Note, Document Number: AN3335, Rev.1, 2006.11
[53] Miron Abramovici, Paul Bradley, Kumar Dwarakanath, Peter Levin, Gerard
Memmi, Dave Miller. A Reconfigurable Design- for-Debug. Proceedings of the
43rd annual ACM IEEE conference on Design automation, 2006: 7-12
[54] 王慧丽. 支持仿真/调试技术的指令派发部件的设计与实现[D]. 硕士学位论
文. 国防科技大学. 2012.3.
[55] Edsel Lu, Marlena Shaffer, Brian Schultz. COE 1541: Pipelined CPU Tutorial.
Available at : www.cs.pitt.edu
第 86 页
国防科学技术大学研究生院工程硕士学位论文
[56] Michael Crews, Yong Yuenyongsgool. Practical design for transferring signals
between clock domains. Available at: www.edn.com, 2003.2
[57] Hopkins A B T, Mcdonald-Maier K D. Debug support for complex
systems-on-chip: A review[J]. IEEE Proceedings-Computers and digital
Techniques. 2006, 153(4):197-207.
[58] BSD Architect Reference Manual. Mentor Graphics Corporation, 2001.9
[59] Wakerly JF. Digital Design Principles and Practice,3rded. Upper Saddle River,
NJ:Prentice-Hall, 2000
[60] Xiao Hu, etc. TraceDo: An On-Chip Trace System for Real-Time Debug and
Optimization in Multiprocessor SoC, ISPA’06, Italy, 2006.12
[61] A. Mayer, H. Siebert, K. Maier, Debug Support, Calibration and Emulation for
Multiple Processor and Powertrain Control SoCs Proceedings of the Design,
2005
[62] Andrew B.T, Debug Support Strategy for Systems-on-Chips with Multiple
Processor Cores, IEEE TRANSACTIONS ON COMPUTERS, VOL. 55, NO. 2,
2006
[63] 李睿婷.高性能 X-DSP 指令流水线部件设计实现与软硬件协同验证[D]. 硕士
学位论文. 国防科技大学. 2014.3.
[64] John Stevenson.Code Computer Studio IDE V3 White Paper.Texas Instruments
Incorporated,2004.7.
[65] TMS320C62x Code Composer IDE Help (SPRH197).Parallel Debugging
Manager:An Introduction.http://www.ti.com.2005
[66] Srtherland. S. The Verilog PLI Handbook (Second Edition): a user’s guide and
comprehensive reference on the Verilog programming language interface[M].
Springer,2002.
[67] Mittra, Swapnajit, ed. Principles of Verilog PLI, Springer. 1999.

第 87 页
国防科学技术大学研究生院工程硕士学位论文

作者在研究生阶段取得的学术成果

[1] 黄佳帅, 万江华, 刘仲, 王慧丽. 中国计算机学会第十八届计算机工程与工艺


年 会 暨 第 四届 微 处理 器 技术 论 坛 论文 集 [C]. 长 沙 :湖 南 科 学 技 术出 版
社,2014.9:212-217.

第 88 页

You might also like