a theoretical and experimental review of systemc front
play

A Theoretical and Experimental Review of SystemC Front-ends Kevin - PowerPoint PPT Presentation

SystemC Front-Ends Existing Conclusion A Theoretical and Experimental Review of SystemC Front-ends Kevin Marquet Matthieu Moy Bageshri Karkare Verimag (Grenoble INP) Grenoble France FDL, September 15 th 2010 FDL, September 15 th 2010 <


  1. SystemC Front-Ends Existing Conclusion A Theoretical and Experimental Review of SystemC Front-ends Kevin Marquet Matthieu Moy Bageshri Karkare Verimag (Grenoble INP) Grenoble France FDL, September 15 th 2010 FDL, September 15 th 2010 < 1 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  2. SystemC Front-Ends Existing Conclusion Summary SystemC 1 SystemC Front-Ends 2 Existing SystemC front-ends 3 Conclusion 4 FDL, September 15 th 2010 < 2 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  3. SystemC Front-Ends Existing Conclusion SystemC Industry-standard for high-level modeling (TLM, . . . ) of Systems-on-a-Chip, Library for C++ (compile with g++ -lsystemc . . . ) FDL, September 15 th 2010 < 3 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  4. SystemC Front-Ends Existing Conclusion SystemC: Example N1 N2 SC_MODULE(not_gate) { int sc_main(int argc, char **argv) { sc_in<bool> in; // Elaboration phase (Architecture) sc_out<bool> out; not_gate n1("N1"); not_gate n2("N2"); void compute (void) { sc_signal<bool> s1, s2; // Behavior bool val = in.read(); // Binding out.write(!val); n1.out.bind(s1); } n2.out.bind(s2); n1.in.bind(s2); SC_CTOR(not_gate) { n2.in.bind(s1); SC_METHOD(compute); sensitive << in; // Start simulation } sc_start(100, SC_NS); }; return 0; } FDL, September 15 th 2010 < 4 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  5. SystemC Front-Ends Existing Conclusion Summary SystemC 1 SystemC Front-Ends 2 Existing SystemC front-ends 3 Conclusion 4 FDL, September 15 th 2010 < 5 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  6. SystemC Front-Ends Existing Conclusion This section SystemC Front-Ends 2 Applications Difficulties Approaches FDL, September 15 th 2010 < 6 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  7. SystemC Front-Ends Existing Conclusion When you don’t need a front-end Main application of SystemC: Simulation ◮ Just need a C++ compiler + the library Testing, run-time verification, monitoring. . . ◮ (Small) modifications of the SystemC library IDE integration, Debugging . . . ◮ Plain C++ front-ends can do most of the job. FDL, September 15 th 2010 < 7 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  8. SystemC Front-Ends Existing Conclusion When you don’t need a front-end Main application of SystemC: Simulation ◮ Just need a C++ compiler + the library Testing, run-time verification, monitoring. . . ◮ (Small) modifications of the SystemC library IDE integration, Debugging . . . ◮ Plain C++ front-ends can do most of the job. No reference front-end available on http://www.systemc.org/ FDL, September 15 th 2010 < 7 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  9. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis Visualization Introspection SystemC-specific Compiler Optimizations Advanced debugging features (architecture → source code, . . . ) FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  10. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis ◮ Need to extract almost everything about the platform Visualization Introspection SystemC-specific Compiler Optimizations Advanced debugging features (architecture → source code, . . . ) FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  11. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis ◮ Need to extract almost everything about the platform Visualization ◮ Need to extract the architecture. Behavior is less important Introspection SystemC-specific Compiler Optimizations Advanced debugging features (architecture → source code, . . . ) FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  12. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis ◮ Need to extract almost everything about the platform Visualization ◮ Need to extract the architecture. Behavior is less important Introspection ◮ Information about the module (Architecture) + possibly local variables (Behavior) SystemC-specific Compiler Optimizations Advanced debugging features (architecture → source code, . . . ) FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  13. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis ◮ Need to extract almost everything about the platform Visualization ◮ Need to extract the architecture. Behavior is less important Introspection ◮ Information about the module (Architecture) + possibly local variables (Behavior) SystemC-specific Compiler Optimizations ◮ Can use architecture information to optimize the behavior Advanced debugging features (architecture → source code, . . . ) FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  14. SystemC Front-Ends Existing Conclusion When you really need a front-end Symbolic formal verification, High-level synthesis ◮ Need to extract almost everything about the platform Visualization ◮ Need to extract the architecture. Behavior is less important Introspection ◮ Information about the module (Architecture) + possibly local variables (Behavior) SystemC-specific Compiler Optimizations ◮ Can use architecture information to optimize the behavior Advanced debugging features (architecture → source code, . . . ) ◮ Needs the architecture and behavior FDL, September 15 th 2010 < 8 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  15. SystemC Front-Ends Existing Conclusion This section SystemC Front-Ends 2 Applications Difficulties Approaches FDL, September 15 th 2010 < 9 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  16. SystemC Front-Ends Existing Conclusion Difficulties Writing SystemC Front-Ends C++ is complex (e.g. clang ≈ 200,000 LOC) 1 Architecture is built at runtime, with C++ code 2 SC_MODULE(not_gate) { int sc_main(int argc, char **argv) { sc_in<bool> in; // Elaboration phase (Architecture) sc_out<bool> out; not_gate n1("N1"); not_gate n2("N2"); void compute (void) { sc_signal<bool> s1, s2; // Behavior bool val = in.read(); // Binding out.write(!val); n1.out.bind(s1); } n2.out.bind(s2); n1.in.bind(s2); SC_CTOR(not_gate) { n2.in.bind(s1); SC_METHOD(compute); sensitive << in; // Start simulation } sc_start(100, SC_NS); }; return 0; } FDL, September 15 th 2010 < 10 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  17. SystemC Front-Ends Existing Conclusion This section SystemC Front-Ends 2 Applications Difficulties Approaches FDL, September 15 th 2010 < 11 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  18. SystemC Front-Ends Existing Conclusion Dealing with the complexity of C++ Write a new C++ front-end (lex+yac, . . . ) ◮ Either huge effort, or many limitations Reuse one ◮ EDG: Good, expansive C++ front-end ◮ GNU g++: Good C++ support, but hard to use as a front-end ◮ clang (part of LLVM): Good C++ support (recent), modular ◮ . . . FDL, September 15 th 2010 < 12 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  19. SystemC Front-Ends Existing Conclusion Dealing with the architecture Static approach: int sc_main(int argc, char **argv) { Analyze the elaboration, // Elaboration phase (Architecture) and find out the not_gate n1("N1"); not_gate n2("N2"); architecture sc_signal<bool> s1, s2; ◮ Usually very limited wrt. complexity of the // Binding n1.out.bind(s1); elaboration code n2.out.bind(s2); Dynamic approach: n1.in.bind(s2); n2.in.bind(s1); Execute the elaboration, and see the result // Start simulation ◮ Few limitations sc_start(100, SC_NS); return 0; ◮ Main difficulty: link } Behavior ↔ Architecture. FDL, September 15 th 2010 < 13 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  20. SystemC Front-Ends Existing Conclusion Dealing with the architecture When it becomes tricky. . . int sc_main(int argc, char **argv) { int n = atoi(argv[1]); int m = atoi(argv[2]); Node array[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { array[i][j] = new Node(...); ... } } sc_start(100, SC_NS); return 0; } FDL, September 15 th 2010 < 14 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

  21. SystemC Front-Ends Existing Conclusion Dealing with the architecture When it becomes tricky. . . int sc_main(int argc, char **argv) { int n = atoi(argv[1]); int m = atoi(argv[2]); Static approach: cannot Node array[n][m]; deal with such code for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { Dynamic approach: can array[i][j] extract the architecture for = new Node(...); ... individual instances of the } system } sc_start(100, SC_NS); return 0; } FDL, September 15 th 2010 < 14 / 25 > Matthieu Moy (Verimag) Review of SystemC front-ends

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend