veeresh k Posted May 16, 2018 Report Posted May 16, 2018 Hi, I am new to system c. I am trying to learn it step by step,but getting messed up with arrival of every new topic. Any suggestions for good book ? Currently i am studying system c primer by J.Bhasker. Please, help me out. Thank you. Quote
maehne Posted May 16, 2018 Report Posted May 16, 2018 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. veeresh k 1 Quote
veeresh k Posted May 16, 2018 Author Report Posted May 16, 2018 As of now,i am familiar with oops concepts and have an intermediate level c++ knowledge. Is it enough or do i need to get much more knowledge regarding c++. Because everytime,i am starting afresh and ending up with more and more doubts. Thank you. Quote
David Black Posted May 16, 2018 Report Posted May 16, 2018 (edited) 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.] Difference between declaration and definition Pass by value vs pass by reference Use of const (5 distinct cases) Casting C++ style (4 types) Implicit vs explicit conversions Use of function overloading and how to deal with ambiguity issues Use of std::string Use of streaming I/O How to declare, define and use classes Definition of default constructor Purpose and syntax of copy constructor How to declare and use namespaces Operator overloading as member functions and global functions. The difference between overloading and overriding. Relationship between class and struct How to extend classes and multiple inheritance Purpose of public and private Storage types and lifetimes: static, automatic, dynamic How to properly use new and delete Use of pointers and understanding of issues with pointer arithmetic Use of arrays and issues Advantages and use of std::vector<> Use of try-catch and throw Use of initializer list in constructor and a proper understanding of the order of construction Polymorphism and RTTI RAII Rule of 4 (6 if using C++11 or later) How and where to define templates/generic programming (does not need to be deep knowledge - just the basics) Use of templates and nested templates. Definition of full and partial template specialization. Different types of constructors and destructors Use of virtual inheritance (hint: it's not polymorphism) Extra topics: More STL including at least std::map<>, std::set<> Boost Modern C++ users (2011 onward) should know about: nullptr Uniform initialization Use of auto Use of ranged for Lambda definition, binding and use constexpr std::unique_ptr<>, std::shared_ptr<> Edited September 13, 2018 by David Black fixed typo Mouhsen.Ibrahim, AmeyaVS, veeresh k and 1 other 2 2 Quote
veeresh k Posted May 17, 2018 Author Report Posted May 17, 2018 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. Quote
Recommended Posts
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.