Jump to content

system c beginner

veeresh k

Recommended Posts

First, make sure that you are proficient in C++ as SystemC is a C++ library, which makes extensively use of advanced C++ features! Then, read a good introductory book on SystemC. I am personally not familiar with the SystemC Primer so cannot judge it. I found the book "SystemC from the Ground Up" by David C. Black, Jack Donovan et al. very helpful to learn SystemC.

Link to comment
Share on other sites

Here is a short list of topics in no particular order you need to be comfortable with in order to be have an easier time learning SystemC:

[Note: Others might chime in with variations on this list (add/subtract), and this is not necessarily a complete list, but I am fairly certain if you are able to comfortably use the topics I list below, you will have very little trouble syntactically with learning SystemC. In addition to C++, it helps if you have some familiarity with event driven simulation (e.g. SystemVerilog or VHDL). Also, if you have deep knowledge in another OO language (e.g. Java or SystemVerilog), you might have an easier time learning the C++ part.]

  1. Difference between declaration and definition
  2. Pass by value vs pass by reference
  3. Use of const (5 distinct cases)
  4. Casting C++ style (4 types)
  5. Implicit vs explicit conversions
  6. Use of function overloading and how to deal with ambiguity issues
  7. Use of std::string
  8. Use of streaming I/O
  9. How to declare, define and use classes
  10. Definition of default constructor
  11. Purpose and syntax of copy constructor
  12. How to declare and use namespaces
  13. Operator overloading as member functions and global functions.
  14. The difference between overloading and overriding.
  15. Relationship between class and struct
  16. How to extend classes and multiple inheritance
  17. Purpose of public and private
  18. Storage types and lifetimes: static, automatic, dynamic
  19. How to properly use new and delete
  20. Use of pointers and understanding of issues with pointer arithmetic
  21. Use of arrays and issues
  22. Advantages and use of std::vector<>
  23. Use of try-catch and throw
  24. Use of initializer list in constructor and a proper understanding of the order of construction
  25. Polymorphism and RTTI
  26. RAII
  27. Rule of 4 (6 if using C++11 or later)
  28. How and where to define templates/generic programming (does not need to be deep knowledge - just the basics)
  29. Use of templates and nested templates.
  30. Definition of full and partial template specialization.
  31. Different types of constructors and destructors
  32. Use of virtual inheritance (hint: it's not polymorphism)

Extra topics:

  1. More STL including at least std::map<>, std::set<>
  2. Boost

Modern C++ users (2011 onward) should know about:

  1. nullptr
  2. Uniform initialization
  3. Use of auto
  4. Use of ranged for
  5. Lambda definition, binding and use
  6. constexpr
  7. std::unique_ptr<>, std::shared_ptr<>
Edited by David Black
fixed typo
Link to comment
Share on other sites

Seriously david,

Thanks a ton. ?

Thank you for letting me know the aspects which i need to cover.

Presently i am working with counter and flip flop examples,which are good enough to be carried with intermediate c++ knowledge i think.

But the moment, when i will be starting with prim and hierarchial channels, i believe i will be needing the advanced topics.

Please ,correct me if i am wrong.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...