vlsi_lecture02_openidea(정무경).ppt

Upload: vinit-patel

Post on 14-Apr-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    1/69

    OpenRISC-Based Embedded

    System Design

    Dynalith Systems

    www.dynalith.com

    April. 3, 2007

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    2/69

    Introduction ( 2 )

    Agenda

    Introduction to OpenCores

    OpenRISC Architecture

    OpenIDEA

    Example

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    3/69

    Introduction ( 3 )

    Introduction to OpenRISC

    OpenRISC

    Free open-source synthesizable RISC processor

    Distributed by OpenCores, http://www.opencores.orgOpenRISC 1000 (or1k)

    Target

    medium and high performance networking and embedded computer environments

    Architecture

    32/64-bit load/store RISC architecture

    Designed with emphasis on performance, simplicity, low power requirements and scalabilityArchitecture Definition

    Instruction set, register set, cache management & coherency, memory model, exception model,

    addressing mode, operands conventions, application binary interface

    Not define implementation-specific details

    Pipeline depth, cache organization, branch prediction, instruction timing, bus interface

    Reference: OpenRISC 1000 Architecture Manual

    http://www.opencores.org/http://www.opencores.org/
  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    4/69

    Introduction ( 4 )

    OR1K Architecture Overview

    Address space 32-bit or 64-bit logical address space

    Instruction

    Simple and uniform-length instruction

    Different instruction set extensions

    - ORBIS 32/64 (OpenRISC Basic Instruction Set)

    32-bit wide, operating on 32- and 64-bit data

    - ORDVX64 (OpenRISC Vector/DSP eXtension)

    32-bit wide, operating on 8-, 16-, 32- and 64-bit data

    - ORFPX32/64 (OpenRISC Floating-Point eXtension)

    32-bit wide, operating 32- and 64-bit data

    ArchitectureSeparate instruction and data cache/MMU (Harvard architecture)

    Unified instruction and data cache/MMU (Stanford architecture)

    Memory addressing Addition of a register operand and a signed 16bit immediate

    Instruction operands Two source register operands (or one register and a constant) and one result register

    Branch Branch delay slot for keeping the pipeline as full as possible

    Context switch Fast context switch support in register set, caches and MMUs

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    5/69Introduction ( 5 )

    OpenRISC 1000 implementations

    OR1200

    Entry level 32bit RISC processor

    I/D Cache, I/D MMU, Tick timer, PIC, Debug

    Internet appliances, Networking, Handheld

    OR1100

    Entry level 32bit DSP

    I Cache, Tick timer, PIC, Debug

    VoIP, Modems, Imaging

    OR1400

    High performance superscalar 64bit RISCI/D Cache, I/D MMU, Tick timer, PIC, Debug, FPU,

    Vector/DSP

    Telecom, Home entertainment

    OR1500

    A limited configuration

    SystemC implementation

    OpenRISC 1 2 0 0

    How theimplementation is

    configured

    Which features areimplemented

    OpenRISC 1000family

    OpenRISC 1000

    architecture 32/64-bit

    OpenRISC 1200

    32/-bitOpenRISC 1x00

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    6/69Introduction ( 6 )

    OpenRISC 1200

    An implementation of OR1K architecture

    32-bit scalar RISC

    ORBIS32 instruction setHarvard micro-architecture

    Five-stage integer pipeline

    Virtual memory support (MMU)

    Separated IMMU and DMMU

    Separated I-cache and D-cache

    Including ComponentsDebug unit

    Tick timer

    Programmable interrupt controller

    Power management

    Performance

    250 MIPS Dhrystone 2.1 @ 250Mhz wc

    250 MMAC operations @ 250Mhz wc

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    7/69Introduction ( 7 )

    OpenRISC 1200

    POWERMPM

    I/F

    DEBUG

    DB

    I/F

    TICK TIMER

    PICINT

    I/F

    IMMU

    WB

    IICache

    8KB

    DCache

    8KBWB

    I

    DMMU

    CPU/DSP

    System I/FOpenRISC 1200

    L1 CachesI/D Cache (1 to 8 KB)

    1-way direct-mapped cache

    MMUWith 1-way direct-mapped TLBHarvard model

    TLB, 16 to 64 entries

    Power ManagementPower save modes

    Software controlled clock frequency

    Interrupt wake-up

    Dynamic clock gating for individual units

    Interrupt Controller

    30 maskable interrupt sourcesTick Timer

    Task scheduling

    Time measurement

    Interrupt generation

    Single-run, restartable or continuous mode

    Debug UnitJTAG Test Access Port

    Non-intrusive Realtime debug/trace for both CPU and

    SystemAccessible via development interface

    Links into GDB

    Reference: OpenRISC 1200 IP Core Specification

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    8/69Introduction ( 8 )

    OpenRISC 1200, Leon 2, MicroBlaze

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    9/69Introduction ( 9 )

    Architecture Details

    Register Set

    Instruction Set

    Exception Model

    Memory Model

    Memory Management

    Cache

    Debug Unit

    Performance Counter Unit

    Power Management

    Timer/PIC

    Application Binary Interface

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    10/69Introduction ( 10 )

    Register Set

    Register set

    Thirty-two or sixteen 32/64-bit general purpose

    registers

    All other registers are special purpose registers

    User-level/supervisor-level register

    Multiple sets of GPRs (not implemented in or1200)

    Special-purpose registers

    32 groups, up to 2048 registers in a group

    l.mtspr/l.mfspr instruction

    Group # Description

    0 System control/status1 Data MMU

    2 Instruction MMU

    3 Data cache

    4 Instruction cache

    5 MAC unit

    6 Debug unit

    7 Performance counter

    8 Power management

    9 PIC

    10 Tick timer

    11 Floating point unt

    12-23 Reserved

    24-31 Custom unit

    Special purpose registers

    Reference: OpenRISC 1000 Architecture Manual

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    11/69

    Introduction ( 11 )

    Instruction Set

    Simple and uniform-length instruction format

    ORBIS32 (or1200)

    32-bit wide, 32-bit boundary aligned, 32-bit data

    operation32-bit integer instructions

    Basic DSP instructions

    32-bit load/store instructions

    Program flow instructions

    Special instructions

    ORBIS64

    32-bit wide, 32-bit boundary aligned, 64-bit dataoperation

    64-bit integer instructions

    64-bit load/store instructions

    ORFPX32

    32-bit wide, 32-bit boundary aligned, 32-bit dataoperation

    Single-precision floating-point instructions

    ORFPX64

    32-bit wide, 32-bit boundary aligned, 64-bit dataoperation

    Double-precision floating-point instructions64-bit load/store instructions

    ORVDX64

    32-bit wide, 32-bit boundary aligned, 8-, 16-, 32-,64-bit data operation

    Vector instructions

    DSP instructions

    Reserved opcodes for custom instructions

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    12/69

    Introduction ( 12 )

    Instruction Set

    prefix

    Precision/datawidthd : doubles : singleb : byte

    h : half-wordn : nibble

    Instruction

    Instruction setl : ORBSISlf : ORFPXlv : ORVDX

    instruction postfix. .

    Or1200 Implementation

    Arithmetic/

    logical

    l.add/l.addc/l.addi

    l.sub

    l.mul/l.Mulu

    l.and/l.andi

    l.or/l.ori

    l.rori

    l.sll/l.slli/l.sra/l.srai/l.srl/l.srli

    l.xor/l.Xori

    Branch l.bf/l.bnf

    l.j/l.jal/l.jalr/l.jr

    l.Rfe

    Load

    /Store

    l.lbs/l.lbz/l.lhs/l.lhz/l.lws/l.lwz

    l.sb/l.sh/l.sw

    Flag l.sfeq/l.sfne

    l.sfges/l.sfgeu/l.sfgts/l.sfgtu

    l.sfles/l.sfleu/l.sflts/l.sfltu

    Register l.mfspr/l.mtspr

    l.movhi

    Exception l.trap/l.sys

    Etc. l.Nop

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    13/69

    Introduction ( 13 )

    Exception Model

    Reset vector

    0x100

    Bus errorCaused by a bus interface error

    Bus error

    Instruction/Data page fault

    Caused by access to an invalid virtual

    address

    Segmentation faultAlignment

    Caused by not aligned access

    Bus error

    Range

    Caused by not available register access

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    14/69

    Introduction ( 14 )

    Memory Model

    Weakly ordered memory model

    High performance memory system

    Responsibility for strict access ordering on programmerMemory synchronization instruction

    l.msync : complete of all load/store operations before the RISC core continues

    Or1200 implementation

    Strongly ordered memory model

    Atomicity

    Atomic memory access instructionsl.lwa, l.swa

    Or1200 implementation

    Not intended for use in multiprocessor environments

    No support for coherency between local data cache and caches of other processors ormain memory

    Write-through cache

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    15/69

    Introduction ( 15 )

    Memory Management

    Support for implementation specific size of physical address spaces up to 35address bits (32 GByte)

    Three different page sizes:Level 0 pages (32 Gbyte; only with 64-bit EA) translated with D/I Area TranslationBuffer (ATB)

    Level 1 pages (16 MByte) translated with D/I Area Translation Buffer (ATB)

    Level 2 pages (8 Kbyte) translated with D/I Translation Lookaside Buffer (TLB)

    Address translation using one-, two- or three-level page tables

    Powerful page based access protection with support for demand-paged virtualmemory

    Support for simultaneous multi-threading (SMT)

    OR1200 implementation

    Only level 2 paging is implemented.

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    16/69

    Introduction ( 16 )

    Memory Management

    OpenRISC 1000 Specification

    32-bit implementation

    64-bit implementation

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    17/69

    Introduction ( 17 )

    Memory Management

    OR1200 implementation

    Level 3 paging implemented

    1-way direct mapped TLB

    TLB Tag

    (13(12)-bit)

    Page Offset

    (13-bit; 8KB)

    31 13 12 0

    TLB

    Match Register

    TLB

    Translate Register

    13

    Virtual Page Number (VPN)

    19(20)31

    TLB Index

    (7(8)-bit; 64(128)-entry)

    Tag (13(12)-bit) V Physical PN (19-bit) swe

    0114(13)

    sre uwe ure ci

    01331

    ?

    Hit/Miss

    Page Offset

    (13-bit)

    13 12 0

    Physical Page Number

    (19-bit)

    31

    64(128)

    -entry

    64(128)

    -entry

    Physical Address

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    18/69

    Introduction ( 18 )

    Cache

    Cache

    1-way direct-map

    Up to 8KB for each I/D cacheCache control

    Block prefetch

    Block flush

    Block invalidate

    Block write-backBlock lock

    Or1200 cache implementation

    Write-through mode

    No support for coherency

    No prefetch

    No support for cache line lock

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    19/69

    Introduction ( 19 )

    Quick Memory

    Quick memory

    On-chip memory

    Unified I&D memory

    LSU D-MMU

    QMEM

    D-Cache

    I-MMU I-CacheGenPC

    Store

    BufferData BIU

    Data BIU

    Virtual

    Addr.

    VirtualAddr

    Physical

    Addr.

    PhysicalAddr

    Inst.

    Data

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    20/69

    Introduction ( 20 )

    Debug Unit

    Eight sets of debug value/compare registers

    Match signed/unsigned conditions on

    instruction fetch EAload/store EA

    load/store data

    Combining match conditions for complex watchpoints

    Watch-points can be counted by Performance Counters Unit

    Watch-points can generate a breakpoint (trap exception)Counting watch-points for generation of additional watch-points

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    21/69

    Introduction ( 21 )

    Debug Unit

    Registers

    DVR (Debug Value Register)

    DCR (Debug Control Register)

    Compare target

    Compare condition

    DMR (Debug Mode Register)

    WP/BP setting

    Combination of conditions of DVRs

    DWCR (Debug Watch-point Counter

    Register)DSR (Debug Stop Register)

    Core stop condition

    DRR (debug Reason Register)

    OR1200 implementation

    Breakpoint but no watchpoint

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    22/69

    Introduction ( 22 )

    Performance Counter Unit

    Benefits

    To improve performance by developing better application level algorithms,

    To better optimized operating system routines

    For improvements in the hardware architecture of these systems

    To improve future OpenRISC implementations

    To add future enhancements to the OpenRISC architecture.

    To help system developers debug and test their systems.

    Performance counter

    Eight countersCounting predefined events

    Load/store/instruction fetch

    I/D-cache miss

    LSU/branch/instruction fetch/data dependency stall

    I/D-TLB miss

    Watch point

    Not implemented in OR1200

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    23/69

    Introduction ( 23 )

    Power Management

    Slow down

    Support 0~15 clock frequency level

    Need external clock synthesizer

    Power mode (dynamic clock gating, dynamic voltage scaling)

    Normal mode

    Doze mode

    All disabled (clock gating) except tick timer and PIC

    Enter normal mode by timer or interrupt

    Sleep mode

    All disabled (clock gating) and voltage down except PIC

    Enter normal mode by interrupt

    Suspend mode

    All disabled (clock gating) and voltage down

    Enter normal mode by reset

    OR1200

    Power manager implemented

    But no clock gating implemented

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    24/69

    Introduction ( 24 )

    Overall Blocks

    LSU

    D-MMU

    QMEM

    D-Cache

    I-MMU I-Cache

    GenPC

    Store

    BufferData BIU

    Inst. BIU

    Virtual

    Addr.

    Virtual

    Addr

    Physical

    Addr.

    Physical

    Addr

    Inst.

    Data

    PIC

    Timer

    Power

    Manager

    Debug

    Unit

    Inst.

    Fetch

    Register

    File

    ALU

    Operand

    MUX

    Multiplier

    MAC

    SPR

    Freeze

    Except

    Write-back MUX

    Control Logic

    (decode)

    C fi bl F t

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    25/69

    Introduction ( 25 )

    Configurable Features

    Supporting FPGA XilinxOn-chip memory

    AlteraInstruction cache 1-way 512-bytes

    1-way 4K-bytes

    1-way 8K-bytes

    No

    Data cache 1-way 4K-bytes

    1-way 8K-bytes

    No

    Instruction MMU 64-entry TLB

    128-entry TLB

    No

    Data MMU 64-entry TLB

    128-entry TLB

    No

    BIST RAM BIST

    No

    C fi bl F t

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    26/69

    Introduction ( 26 )

    Configurable Features

    Burst bus interface On

    OffBus retry count 1~256

    WISHBONE Prior to WISHBONE B.3

    CAP (consecutive address burst)

    (prior to B.3)

    WISHBONE B.3

    Divider OnOff

    Rotate On

    Off

    Multiplier Fast

    Slow

    Off

    MAC On

    Off

    Multiplier On

    Off

    C fi bl F t

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    27/69

    Introduction ( 27 )

    Configurable Features

    Clock divide 1 or 2 or 4

    Register file Two port RAM

    Dual Port RAM

    Flip-flop based register

    Debug unit HW break point On/Off

    # of DVR/DCR pair 0~7

    Trace buffer On

    OffPIC # of interrupt (2~31)

    Off

    No

    Tick timer 64-entry TLB

    128-entry TLB

    No

    Qmem On

    Off

    Store buffer Entry 4 or 8

    No

    C t I t ti

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    28/69

    Introduction ( 28 )

    Custom Instruction

    Reserved instructions for custom implementation

    ORBIS32/64

    Eight instructions are reservedl.cust1 ~ l.cust8

    ORFPX64

    Two instructions are reserved

    lf.cust1.d, lf.cust1.s

    ORVDX64

    Eight instructions are reservedlv.cust1 ~ lv.cust8

    Custom instruction implementation

    Add decode logic for the instruction (or1200_ctrl.v)

    Add processing logic for the instruction (or1200_alu.v)

    Development Tools

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    29/69

    Introduction ( 29 )

    Development Tools

    Development Tool Name Version

    Compiler gcc 3.4.4 GNU compiler

    Binary utility binutils 2.16.1 GNU binary utilities

    C library newlib 1.10.0 GNU C library

    Architecture simulator or1ksim 0.2.0 Or100 ISS with peri.models

    Debugger gdb 5.3 GNU source level

    debugger

    GUI insight GUI

    Operating System

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    30/69

    Introduction ( 30 )

    Operating System

    Operating System Name Version

    Linux Linux Kernel 2.4

    uClinux uClinux 2.0

    RTEMS RTEMS 4.5.0 Hard real-time OS

    ecos ecos 2.0

    Reference Platform/Example

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    31/69

    Introduction ( 31 )

    Reference Platform/Example

    Etc. Name Version

    SoC platform orp_soc SoC reference platform

    Monitor program orpmon

    MP3 decoder mad-xess MAD MP3 player porting

    GUI Microwindows

    examples Various simple

    examples

    Outline

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    32/69

    Introduction ( 32 )

    Outline

    Software Development with OpenIDEA

    Software Development

    Architecture SimulationHardware Development with iNSPIRE-Lite

    Hardware/Software Co-Verification with OpenIDEA

    Verification Flow

    Software Development

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    33/69

    Introduction ( 33 )

    Software Development

    SourceBrowser CodeEditor

    Compiler

    Window

    Software Development

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    34/69

    Introduction ( 34 )

    Software Development

    Platform

    Windows 2000/XP

    Target Processor

    or1200

    Code Editor

    Source Browser

    Syntax Highlighting

    Syntax Checking

    Block Indent/Dedent/FoldingComment out/uncomment

    Line Number

    Find/Replace/Find in Files

    Software Development

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    35/69

    Introduction ( 35 )

    Software Development

    Compiler

    gcc 3.4.4

    Utilities

    binutil 2.16.1

    make

    bin2c

    bin2hex

    bin2flash

    bin2srec

    Newlib

    1.10.0

    Software Development

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    36/69

    Introduction ( 36 )

    Software Development

    Startup Code

    Link Script File

    Architecture Simulation

    S L l D b i

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    37/69

    Introduction ( 37 )

    Source-Level Debugging

    OpenIDEAOpenIDEA

    Socket

    Debug

    Windows

    Source-Level

    Debugger

    ISS: Architecture SimISS: Architecture Sim

    Processor Model

    SRAM Model

    Flash Model

    Peripheral Models

    C Models

    Source-Level Debugging

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    38/69

    Introduction ( 38 )

    Source Level Debugging

    SourceBrowser

    Register

    Code

    Watch Stack

    Debugger Break Point

    Source-Level Debugging

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    39/69

    Introduction ( 39 )

    Source Level Debugging

    Debugger

    gdb 5.0

    C Source-Level Debugging

    Break

    Step

    Watch, etc.

    Assembly-Level Debugging

    Instruction Step

    Register View, etc.

    Architecture Simulation

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    40/69

    Introduction ( 40 )

    Processor Architecture Exploration

    Core

    MMU

    Cache, etc.

    System-Level Simulation with Peripheral

    Models

    Memory

    UART

    Ethernet

    VGA, etc.

    Performance Profiling

    Execution Log

    Memory Profile, etc.

    Agenda

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    41/69

    Introduction ( 41 )

    g

    Software Development with OpenIDEA

    Hardware Development with iNSPIRE-Lite

    Automatic Hardware CompositionOpen-Source Library

    Simulation/Synthesis/Prototyping

    Hardware/Software Co-Verification with OpenIDEA

    Verification Flow

    iNSPIRE

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    42/69

    Introduction ( 42 )

    EDIF

    HDLHDL

    HDL

    EDIFEDIF

    Library

    HDL SimuilationEnvironment

    Synthesis &

    Mappnig(for FPGA)

    Cycle-Level &

    Transaction -LevelCo-Simuilation

    Environment

    Integrated Design Environment for Hardware DevelopmentArchitecture Exploration

    Generation ofHDL Simulation Environment

    SystemC Simulation Environment

    Synthesis & FPGA MappingCycle-Level & Transaction-Level Co-Simulation Environment

    Supporting Various Library

    Architecture-Wizard

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    43/69

    Introduction ( 43 )

    LEGO-Brick-Like Hardware Composition

    GUI-Based Hardware Composition

    Various IP Library

    Open Source IP

    Architecture Exploration

    IP Properties

    Architecture-Wizard

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    44/69

    Introduction ( 44 )

    Bus Generation

    AMBA AHB

    AMBA APB

    WISBHBONE

    Bus Architecture Exploration

    Bus Architecture

    Address Map

    Priority, etc.

    IP Library

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    45/69

    Introduction ( 45 )

    OpenCores Library

    License (L)GPL

    OR1200

    OR1200 Debug

    Audio

    Video

    Ethernet

    CAN

    DMA

    PS2, etc.

    Dynalith Library

    FLASH Controller

    SRAM Controller

    JTAG to USB, etc.

    IP Library

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    46/69

    Introduction ( 46 )

    RTL Source

    Synthesis Script

    Example

    Hardware

    Software

    Simulation/Synthesis

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    47/69

    Introduction ( 47 )

    Simulation Environment

    Top Module Generation

    Simulation Model Connection

    SRAM, SDRAM, UART, etc.

    Simulation Script

    Synthesis

    Top Module Gereration

    Synthesis Script

    Synthesis Assist

    FPGA P&R

    FPGA Mapping Script

    P&R Assist

    Simulation

    Synthesis

    Emulation

    Agenda

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    48/69

    Introduction ( 48 )

    Software Development with OpenIDEA

    Hardware Development with iNSPIRE-Lite

    Hardware/Software Co-Verification with OpenIDEADebugger + ISS

    Debugger + ISS + HDL Simulator (SystemC)

    Debugger + ISS + HDL Simulator + FPGA

    Debugger + HDL Simulator (+ FPGA)

    Debugger + FPGA Prototyping

    Debugger + ASIC

    Verification Flow

    1. SW Simulation

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    49/69

    Introduction ( 49 )

    OpenIDEA (Debugger+ISS)

    Software Development

    OpenIDEAOpenIDEA

    Socket

    Debug

    Windows

    Source-Level

    Debugger

    ISSISS

    Processor Model

    SRAM Model

    Profile/Log

    Flash Model

    UART Model

    TerminalTerminal

    Hello World.SocketC Models

    2.1 HW/SW Co-Simulation (IP Verification)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    50/69

    Introduction ( 50 )

    ( )OpenIDEA (Debugger+ISS) + Third Party HDL Simulator

    IP Verification

    Device Driver Development

    OpenIDEAOpenIDEA

    Socket

    Debug

    Windows

    Source-LevelDebugger

    ISSISS

    Processor Model

    SRAM Model

    IP1

    C Models

    HDL Sim.HDL Sim.

    IP2

    IP3

    Socket

    2.2 HW/SW Co-Simulation (System-Level)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    51/69

    Introduction ( 51 )

    OpenIDEA (Debugger+ISS) + Third Party HDL Simulator + FPGA Board (Dynalith)

    System-Level Co-Simulation

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    ISSISS

    Processor Model

    C Models

    HDL Sim.HDL Sim.

    IP3

    Socket

    IP2

    BUS

    IP1

    SRAM Model

    3 HW/SW Co-Simulation/Co-Emulation

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    52/69

    Introduction ( 52 )

    OpenIDEA (Debugger+ISS) + Third Party HDL Simulator + FPGA Board (Dynalith)

    System-Level Co-Simulation/Co-Emulation

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    ISSISS

    Processor Model

    C Models

    HDL Sim.HDL Sim.

    IP3

    Socket BUS

    IP1SRAM Model IP2

    FPGA

    PCI/USB

    4.1 HW Simulation with SW Debugging

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    53/69

    Introduction ( 53 )

    OpenIDEA (Debugger) + Third Party HDL Simulator

    HW/SW Co-Verification with Accurate Processor Model

    SW Debugging with HW Probing

    OpenIDEAOpenIDEA

    Socket

    Debug

    Windows

    Source-LevelDebugger

    C Models

    HDL Sim.HDL Sim.

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor Model

    4.2 HW Simulation with SW Debugging(2)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    54/69

    Introduction ( 54 )

    OpenIDEA (Debugger) + Third Party HDL Simulator + FPGA Board (Dynalith)

    HW/SW Co-Verification with Accurate Processor Model

    SW Debugging with HW Probing

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    C Models

    HDL Sim.HDL Sim.

    BUS

    IP1

    SRAM Model

    IP3

    Processor Model

    IP2

    FPGA Board

    PCI/USB

    5. HW Prototyping SW Debugging

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    55/69

    Introduction ( 55 )

    OpenIDEA (Debugger) + FPGA Board (Dynalith)

    HW/SW Co-Verification with Source-Level Debugger and BILA (Built In Logic Analyzer) or

    ChipScope(Xilinx)

    FPGA BoardOpenIDEAOpenIDEA

    PCI/USB

    JTAG

    Debug

    Windows

    Source-Level

    Debugger

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor Model

    6. In Circuit Emulation (ICE)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    56/69

    Introduction ( 56 )

    OpenIDEA (Debugger) + Evaluation Board/FPGA Board (Custom)

    In-Circuit Emulation

    Software Development with Real Platform

    ASIC Board / Custom FPGA BoardOpenIDEAOpenIDEA

    USB

    DebugWindows

    Source-Level

    Debugger

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor

    ASIC/FPGAOpenICE

    JTAG

    Agenda

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    57/69

    Introduction ( 57 )

    Introduction to OpenRISC

    Software Development with OpenIDEA

    Hardware Development with iNSPIRE-LiteHardware/Software Co-Verification with OpenIDEA

    Verification Flow

    Hardware Design/Verification Flow

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    58/69

    Introduction ( 58 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    IP Design and Verification

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    59/69

    Introduction ( 59 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    iNSPIREiNSPIRE

    Socket

    ArchitectureWizard

    HDL SimulatorHDL Simulator

    IPDriver/Phy/Mem

    ory Model

    DUV

    Simuilation Top

    Generation

    Test-bench

    HDL Simulation

    IP Design and Verification

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    60/69

    Introduction ( 60 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    HDL SimulatorHDL Simulator

    Simuilation Top

    Test-bench

    FPGA Board

    IPDriver/Phy/Memory

    FPGADUV

    Proxy

    iNSPIREiNSPIRE

    ArchitectureWizard

    Generation

    Design FlowWizard

    Co-Emulation (Acceleration)

    System-Level HW/SW Co-Verification (RTL)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    61/69

    Introduction ( 61 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    ISSISS

    Processor Model

    SRAM Model

    IP1

    C Models

    HDL Sim.HDL Sim.

    IP2

    IP3

    Socket

    2.1 HW/SW Co-Simulation

    System-Level HW/SW Co-Verification (RTL)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    62/69

    Introduction ( 62 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    C Models

    HDL Sim.HDL Sim.

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor Model

    4.1 HW Simulation with SW Debugging

    System-Level HW/SW Co-Verification (RTL)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    63/69

    Introduction ( 63 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    C Models

    HDL Sim.HDL Sim.

    BUS

    IP1

    SRAM Model

    IP3

    Processor Model

    IP2

    FPGA Board

    PCI/USB

    4.2 HW Simulation with SW Debugging

    System-Level HW/SW Co-Verification (RTL)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    64/69

    Introduction ( 64 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    FPGA BoardOpenIDEAOpenIDEA

    PCI/USBJTAG

    DebugWindows

    Source-LevelDebugger

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor Model

    5. HW Prototyping with SW Debugging

    System-Level HW/SW Co-Verification (Gate-Level)

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    65/69

    Introduction ( 65 )

    Gate-Level Simulation

    RTL Design of Each IP

    Individulal IP Verification Using HDL

    Test-Bench

    Individulal IP

    Design &Verification

    System-LevelHW-SW Co-

    Verification

    IP Verification in System

    System-Level RTL Verification

    FPGA Prototyping

    Synthesis

    PnR

    Static Timing Analysis

    Post PnR Simulation

    RT

    -Level

    Gate-Level

    OpenIDEAOpenIDEA

    Socket

    DebugWindows

    Source-LevelDebugger

    C Models

    HDL Sim.HDL Sim.

    BUS

    IP1

    SRAM Model

    IP2

    IP3

    Processor Model

    4.1 HW Simulation with SW Debugging

    OpenIDEATM OpenRISC Development Toolkit

    OpenIDEA ASIC In-Circuit EmulationWith ASIC

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    66/69

    (): 02) 556-0020 Fax: 02) 556-2252 E-mail: [email protected] http://www.dynalith.com

    Software DevelopmentProcessor Architecture SimulationSource-Level Debugging

    iNSPIRE-LiteGraphical Architecture CompositionAutomatic Hardware GenerationVarious Open-Source Library

    iNCITE

    3rd-Party HDL Simulator HW/SW Co-SimulationWith Third-Party HDL SimulatorSource-Level SW DebuggingSignal-Level HW Debugging

    HW/SW Co-EmulationWith FPGA Prototype Board (iNCITE )Source-Level SW DebuggingSignal-Level HW Debugging Using BILAFast USB 2.0 Connection to PCVarious Peripherals Supporting

    Source-Level SW DebuggingJTAG Connection to PC

    OpenIDEA OpenRISC SoC-.,/.

    Design and verification steps using OpenIDEA

    ISS-based software simulation

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    67/69

    Introduction ( 67 )

    ISS based software simulation

    It uses OpenRISC ISS to run software

    and pure-functional hardware model for

    hardware.

    ISS-HDL co-simulation

    It uses OpenRISC ISS to run software

    and RTL hardware model running on top

    of HDL logic simulator.

    HDL-based simulation

    It uses a whole system including Open-

    RISC core running on top of HDL

    simulator and the core is controlled by

    debugger.

    FPGA-based emulation

    It uses OpenRISC core to run software

    and hardware blocks in FPGA.

    Recommended design and verification steps

    1 ISS-based software simulation using

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    68/69

    Introduction ( 68 )

    1. ISS based software simulation using

    OpenIDEA.

    2. Building system hardware model using

    iNSPIRE-Lite.3. ISS-HDL co-simulation using

    OpenIDEA and HDL simulator.

    4. Building system hardware for FPGA

    using iNSPIRE-Lite.

    5. FPGA-based emulation using

    OpenIDEA and iNCITE.

    UART example

    Example system

  • 7/27/2019 VLSI_Lecture02_OpenIDEA( ).ppt

    69/69

    Introduction ( 69 )

    Example system

    OpenRISC 1200 processing core

    Memory controller

    UART (Universal Asynchronous Receiveand Transmit)

    WISHBONE bus

    The user application program will be

    loaded into the SSRAM after cross-

    compilation, and run by the OpenRISC

    processing core.The user application program simply

    controls the UART in order to get and put

    character data through the serial cable,

    which is connected through the Line

    Driver and UART.