ARM SoC设计的软件和硬件协同验证
2006-8
北京航大
安德鲁斯
178
无
本书涵盖了有关使用ARM微处理器内核来进行开发和验证的SoC设计的重要信息。运用具体的ARM SoC的例子来描述软件和硬件协同验证的概念,并提供了采甩ARM微处理器进行设计的与协同验证相关的有用信息。主要内容包括:嵌入式系统验证、软件和硬件设计过程、ARM体系结构的SoC协同验证课题、软件和硬件协同验证、高级软件和硬件协同验证、硬件验证环境与协同验证以及ARM SoC设计方法举例。 主要面向的读者是开发软件和硬件SoC协同验证技术的工程师。可作为从事集成电路设计的工程技术人员、基于ARM嵌入式系统应用与开发的技术人员的参考书。
Jason Arldrews现在是Verisity公司的一员,目前正在从事软件和硬件协同验证以及SoC设计的测试平台方案领域的工作。他实现了许多商业协同验证工具以及很多自定义的协同验证解决方案。他在Verisity、Axis System、Simpod、StJmmit Design以及SimLJlation Tecrmologies公司所从事的软件开发和产品管理工作使他在EDA和嵌入式市场方面拥有丰富的经验。他曾经在嵌入式系统委员会(Embedded Systems Confererlce)、通信设计委员会(CommurlicatiorI Design Conference)以及IP/SoC上发表过论文和教学课程,并撰写了大量有关软件和硬件协同验证、设计验证的文章。他在Citadel(Charleston,SC)大学拥有电子工程学学士学位,在Mirmesota大学拥有电子工程学硕士学位。他现在与他的妻子Deborah和四个孩子住在Minneapolis地区。
第1章 嵌入式系统验证简介1.1 什么是嵌入式系统?21.2 嵌入式系统无所不在31.3 设计的约束41.4 嵌入式系统分解61.4.1 微处理器、芯片与电路板61.4.2 嵌入式系统的分类71.5 嵌入式系统设计流程91.6 验证与确认111.7 人际互动121.8 关于这本书131.9 范围与纲要14第2章 软件和硬件设计过程2.1 SoC协同验证的三个组成部分162.2 验证平台162.3 软件工程师对嵌入式系统的观点222.4 硬件工程师对嵌入式系统的观点232.5 软件开发工具242.5.1 编辑器242.5.2 源代码修订控制252.5.3 编译器262.5.4 调试器262.5.5 模拟器272.5.6 开发板272.5.7 集成开发环境(IDE)272.6 软件调试连接272.6.1 JTAG282.6.2 Stub282.6.3 直接连接292.7 软件的类型292.7.1 系统初始化软件和HAL292.7.2 硬件诊断测试套件292.7.3 RTOS302.7.4 RTOS设备驱动程序和应用软件302.8 软件开发过程302.9 硬件开发工具352.9.1 编辑器352.9.2 源代码修订控制362.9.3 Lint工具362.9.4 代码覆盖372.9.5 调试工具372.9.6 验证语言382.9.7 断言382.9.8 调试的定义402.9.9 存储器模型402.9.10 微处理器模型412.10 硬件设计过程432.11 微处理器回顾432.12 软件和硬件的交互442.12.1 软件调试特征442.12.2 硬件调试特征44第3章 ARM体系结构的SoC协同验证课题3.1 ARM的背景473.2 ARM的体系结构483.2.1 ARM的体系结构、家族及CPU内核493.2.2 Thumb指令集513.2.3 编程模型523.3 指令集533.3.1 数据传输指令533.3.2 协处理器指令543.3.3 异常和中断543.3.4 内存规划和字节顺序563.4 ARM总线接口协议573.4.1 ARM7TDMI总线协议583.4.2 AMBA规范603.4.3 AMBA协议简介613.4.4 AMBA ASB613.4.5 AMBA AHB623.4.6 AMBA APB623.4.7 AMBA 3.0与AXI633.4.8 对ARM CPU总线接口的总结633.4.9 AHB指南643.4.10 复位时的配置673.4.11 AHB传输的各个阶段683.4.12 AHB仲裁683.4.13 AHB地址阶段703.4.14 AHB数据阶段703.4.15 AHB-Lite723.4.16 单层和多层AHB723.4.17 ARM926EJS例子733.4.18 中断信号753.4.19 指令和数据高速缓存753.4.20 TCM783.5 ARM总结79第4章软件和硬件协同验证4.1 协同验证的历史814.2 商业协同验证工具的出现824.3 协同验证的定义844.3.1 定义844.3.2 协同验证的作用854.3.3 项目进度的节省854.3.4 通过协同验证提供的可视性来了解运行情况864.3.5 协同验证促进了交流874.3.6 协同验证与协同模拟的比较874.3.7 协同验证与协同设计的比较874.3.8 真的需要协同验证吗?884.4 协同验证的方法884.4.1 本地编译软件894.4.2 指令集模拟894.4.3 硬件Stub894.4.4 RTOS模拟器904.4.5 微处理器评估板914.4.6 波形、日志文件和反汇编914.5 协同验证方法的一个例子924.5.1 带有逻辑模拟的主机代码模式924.5.2 带有逻辑模拟的指令集模拟944.5.3 C语言模拟964.5.4 带有软件调试功能的CPU的RTL模型984.5.5 带有逻辑模拟的硬件模型1004.5.6 带有逻辑模拟的评估板1014.5.7 在线仿真1024.5.8 FPGA原型1044.6 协同验证的衡量标准1054.6.1 性能1054.6.2 验证的准确性1054.6.3 AHB仲裁和周期精确的问题1074.6.4 模型设计总结1094.6.5 同步1104.6.6 软件的类型1104.6.7 其他的衡量标准111第5章 高级软件和硬件协同验证5.1 直接访问模拟内存1125.2 内存优化与性能1165.3 同步的模式1195.4 进程间通信1205.5 HDL模型和C语言模型的混合1225.6 隐式访问1245.7 保存并重启1275.8 后处理软件调试技巧1285.9 嵌入式软件工具的问题1315.10 协同验证的调试问题132第6章 硬件验证环境与协同验证6.1 总线监测器1336.2 协议检测1446.2.1 地址对齐1446.2.2 发送空闲传输1456.3 断言1466.3.1 断言的定义1466.3.2 断言的实现方法1476.3.3 声明式断言1476.3.4 程序式断言1486.3.5 形式化特性语言1486.3.6 伪注释指令1496.3.7 后处理模拟历史记录1496.3.8 用于模拟加速和仿真的断言1506.4 使用总线功能模型的测试平台1516.4.1 定向测试1516.4.2 受约束的随机测试1526.4.3 测试平台的结构1536.4.4 功能覆盖率1546.4.5 兼容性测试1556.4.6 软件验证1556.4.7 软件打印语句156第7章 ARM SoC设计方法举例7.1 SoC设计的难点1627.2 验证效率1627.3 调试的循环1637.4 协同验证的方法1647.4.1 系统初始化和HAL开发1657.4.2 诊断程序1657.4.3 RTOS和设备驱动程序1657.4.4 应用软件1667.4.5 测试平台的开发1667.4.6 三个验证阶段1667.5 ARM验证流程的例子1687.5.1 模块和子系统验证1687.5.2 初始系统集成1697.5.3 集中的硬件验证1707.5.4 协同验证1707.5.5 系统软件测试1717.6 协同验证工程师1737.7 结论174后记177
无