1 / 25

OCP TLM for Architectural Modeling

OCP TLM for Architectural Modeling. Tim Kogel, CoWare Inc. Outline. System-Level Design Working Group Update SLD WG Charter Latest 2.1.2 release Standards based Architectural Modeling TLM Standardization Overview The new OCP TL3 Channel Transaction Recording.

janna
Download Presentation

OCP TLM for Architectural Modeling

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OCP TLM for Architectural Modeling Tim Kogel, CoWare Inc.

  2. Outline • System-Level Design Working Group Update • SLD WG Charter • Latest 2.1.2 release • Standards based Architectural Modeling • TLM Standardization Overview • The new OCP TL3 Channel • Transaction Recording

  3. OCP-IP System Level Design WG Charter • TLM modeling of the Open Core Protocol • Proliferation of open standards • Proliferation of ESL design to master SoC complexity • Metrics/goals • Up-to-date SystemC modeling library available • Improved time-to-market through streamlined ESL • Adoption of OCP based ESL methodology and tooling

  4. OCPIP SLD WG • Active members: • Nokia (Chair), Sonics, TI, CoWare, Jeda, GreenSocs • Achievements • Channels, Monitors, Adapters • Methodology, Abstraction levels, examples • CoWare contribution • SCV based performance monitor • Methodology for OCP based Architectural Modeling • Unified monitor interface

  5. Release 2.1.2 (February 2006) • Update of layer adapters (Sonics) • TL0/TL1 adapters support full OCP configurability • Assertion package (Jeda) • Verification of OCP SystemC models • Unified monitor API (CoWare) • Similar API for TL1, TL2, and TL3 • Enable user-defined OCP monitors • Hook arbitrary number of OCP monitors • TL3 channel for architectural modeling (CoWare)

  6. Outline • System-Level Design Working Group Update • SLD WG Charter • Latest 2.1.2 release • Standards based Architectural Modeling • TLM Standardization Overview • The new OCP TL3 Channel • Transaction Recording

  7. OCP based Architectural Modeling • Compliance with OSCI TLM standard • Re-define TL3 channel on-top of OSCI TLM • Map TL2 on-top of OSCI TLM • Interoperability of different TLM use-cases • OCP/PV transactors • Examples • Initiator, target, simple bus, simple systems • Methodology whitepaper

  8. OSCI TLM Standard • Define foundation for Transaction Level Modeling • Blocking/non-blocking • Blocking: interface should be called from a sc_thread • Non-blocking: interface can also be called from sc_method • Uni-directional versus bi-directional communication Bi-directional Uni-directional RESP transport(REQ&) void put(T&)void get(T&) Blocking bool nb_put(T&)bool nb_get(T&) Non-Blocking N/A?

  9. packets TL3 total event ordering, burst-level annotation functional specification, generic architecture exploration burst of words TL2 burst-level and word-level annotation exploration of OCP based architecture word cycle accurate TL1 100% cycle accurate performance profiling OCPIP TLM Abstraction Levels Communication Accuracy Data Accuracy Timing Accuracy Addressed Design Problems domain specific MoC tokens causality, partial event ordering algorithm design TLM RTL bitvector cycle accurate synthesis

  10. Memory #2 Memory #1 Memory #3 Memory #4 Architectets View: Exploration Evaluation Results: Producer #0 Producer #1 Bus I Bus II Bus III Bridge Bridge

  11. void Master::response_thread(){ OCPTL2Response resp; while (true) { wait(ocp->ResponseStartEvent); ocp->getOCPResponse(resp); ocp->acceptResponse(10); } class OCPTL2Response{ SRespType SResp; int DataLength; int SThreadID; int prio; …} SystemC based OCP Channel OCP Channel OCP Master Request Response

  12. OSCI TLM Compliant OCP TL3 Channel Master Slave tlm_nonblocking_put_if tlm_get_peek_if request response tlm_get_peek_if tlm_nonblocking_put_if

  13. requestStartEvent sendRequest() requestEndEvent acceptRequest() responseStartEvent sendResponse() responseEndEvent acceptResponse() Un-timed OCP TL3 Channel Primitives slave master  ts,accept methodCall() eventNotification tresponse  tm,accept

  14. Timed TL3 Channel Primitives slave master sendRequest(trequest) trequest accept(ts,accept) requestStart requestStart ts,accept sendResponse(tresponse) requestEnd tresponse responseStart responseStart tm,accept accept(tm,accept) responseEnd

  15.  taccept  tdelay Mixing TLM Use-Cases to enable Model Reuse Initiator TL2 My_thread { getReqBlocking(REQ); acceptReq(Δtaccept) RESP transport(REQ); sendResp(RESP, Δtdelay); } AV-PV adaptor Target PV

  16. trace monitor performance monitor custom monitor New OCP Monitor Interface OCP Channel OCP Master OCP Slave

  17. Summary • Methodology document • Available to public on ocpip.org • OCP based performance modeling • Demonstrate OSCI TLM standard compliance • Implement TL3 channel on top of OSCI TLM 1.0 standard • Coding guidelines and examples • Traffic generator, slaves, multi-master bus, systems • Unified Monitor Interface • ASCII based transaction tracing • SCV based transaction recording

  18. Backup Slides

  19. OCP TL3 to OSCI TLM mapping (1) OCP_TL3_MasterIF tlm_nonblocking_put_if bool sendOCPRequest(const R &r) bool nb_put(const T &t) bool requestInProgress() !( bool nb_can_put() ) sc_event& RequestEndEvent() sc_event& ok_to_put() sendOCPRequestBlocking (derived) sc_event& RequestStartEvent() (derived)

  20. OCP TL3 to OSCI TLM mapping (2) OCP_TL3_SlaveIF tlm_get_peek_if bool getOCPRequest(R &r) bool nb_peek(T &t) bool requestInProgress() bool nb_can_peek() sc_event& RequestStartEvent() sc_event& ok_to_peek() bool acceptRequest() T nb_get() getOCPRequestBlocking (derived) sc_event& RequestEndEvent() (derived)

  21. OSCI TLM based Generic TL2 Channel Master Interface Slave Interface request channel response channel TLM TL2 Master Protocol TLM TL2 Slave Protocol delayQ put get TLM get put delayQ TLM

  22. AV: Scope • AV abstraction enables architecture exploration • Protocol agnostic synchronization interface • Timing information sufficient for trade-off analysis • Interfaces well with PV models and IA ISS’s • HW synchronization can be taken into account • AV abstraction is useful to determine HW/SW partitioning, interconnect configuration

  23. OCP Timing Model thread(){ ocp->sendRequest(req); ... wait (ocp->ReqEndEvent); ... } thread(){ ocp->getRequest(req); wait(t_accept) ocp->accept(); wait(t_response) ocp->sendResponse(); } OCP Channel OCP master OCP slave slave busy taccept tresponse

  24. OCP Timing Model thread(){ ocp->sendRequest(req); ... wait (ocp->ReqEndEvent); ... } thread(){ ocp->getRequest(req); ... ocp->accept(ts,accept); wait(ts,accept) ocp->sendResponse(); } OCP Channel OCP master OCP slave slave blocked taccept process response tresponse

  25.  tt,accept acceptReq(tt,accept) reqEnd tt,delay … startResp() Compositional Timing Model bandwidth  taccept  tdelay bus target initiator reqStart sendReq() tbus,pending getReq() acceptReq(ttransfer) reqStart sendReq() reqEnd tbus,ransfer

More Related