Uri Raz Posted October 14, 2020 Report Posted October 14, 2020 (edited) I'm working on an app simulating a system on a chip with a few dozen SC modules. Its wall clock run time is too long, and with planned new functionality will take even longer. So I'm looking for ways to improve performance. E.g. currently the application is currently running as a single O/S thread, is there a way to make each module run in its own O/S thread? Many thanks! Edited October 14, 2020 by Uri Raz Clarification of intent Quote
David Black Posted October 14, 2020 Report Posted October 14, 2020 Be very careful with terminology here. If you are asking about host simulator OS threads, the answer is pretty much no. SystemC is a discrete event driven simulator using cooperative multitasking (which greatly simplifies coding) and is not thread safe. You might want to look at what is contributing to the slowdown. You should probably use a software profiler. There are two issues that commonly cause problems in SystemC: I/O. More specifically output to the log file. If your simulation has lots of SC_REPORT_INFO or std::cout producing large logs at run-time, then you will definitely want to fix that. Use SC_REPORT_INFO_VERB to reduce I/O and select an appropriate verbosity. Clocks. Fast SystemC models do not use sc_clock. This is easy to do if carefully thought out up front. RTL designers usually have more trouble understanding this and so I typically see RTL designers struggling with the removal of clocks. 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.