Services - tools - models - for embedded software development
Embecosm divider strip
  Next

Integrating the GNU Debugger with Cycle Accurate Models

A Case Study using a Verilator SystemC Model of the OpenRISC 1000

Jeremy Bennett

Embecosm

Application Note 7. Issue 1

March 2009


Table of Contents

1. Introduction
1.1. Why Use Cycle Accurate Modeling
1.2. Target Audience
1.3. Open Source
1.4. Further Sources of Information
1.4.1. Written Documentation
1.4.2. Other Information Channels
1.5. About Embecosm
2. Overview of Technologies and Tools
2.1. OSCI SystemC IEEE 1666
2.2. Cycle Accurate Modeling
2.2.1. Level of Modeling Detail
2.2.2. Tool Support
2.2.3. Modeling Language
2.3. OpenCores and the OpenRISC Project
2.3.1. The OpenRISC Reference Platform System-on-Chip (ORPSoC)
3. The Target Model
3.1. JTAG Interface
3.2. Embedded Software Applications
3.3. Building the Model
4. The GDB Remote Serial Protocol Server
4.1. System Class and Module Structure
4.2. The RSP Packet Interface, RspConnection
4.2.1. RspConnection class
4.2.2. RspPacket class
4.3. Modeling the OpenRISC 1000 Debug Unit
4.3.1. How JTAG is used by the OpenRISC 1000 Debug Unit
4.3.2. DebugUnitSC class
4.3.3. SprCache class
4.3.4. MemCache class
4.4. Overall GDB Server Behavior
4.4.1. GdbServerSC class
4.4.2. MpHash Class
4.4.3. MpEntry Struct
4.5. Building the Complete System
4.5.1. An Example Debugging Session.
4.6. Foibles of Real Hardware
4.6.1. Setting the Next Program Counter SPR
4.6.2. JTAG register bit width
4.6.3. Hardware Single Step
5. Optimizing the GDB Server
5.1. Assessing Performance
5.1.1. Load Generated by Debugging Commands
5.2. Caching SPR and Memory Access
5.3. Compiler Optimization
5.4. Overhead of the RSP Debugger Interface
5.5. Summary of Performance Optimization
6. Summary
Glossary
References
Embecosm divider strip