Replies: 1 comment 1 reply
-
The hard thing about making a Verilog simulator multi-threaded is preventing the inter-thread communication dominating the overall execution time. Verilog models generally consist of many parallel tasks, but they are normally highly inter-dependent. To make a viable multi-threaded simulator, you would need to assign highly-related tasks to the same CPU thread and ensure the CPU threads rarely needed to communicate. Your tgt-cmp may be different, and more easily mapped to multiple threads. The iverilog targets are DLLs that are loaded by the main compiler. Maybe you need to add the -pthread flag in the top level Makefile as well. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hello,
I added a C++ code directory at the same hierarchy as tgt-vvp, that I call tgt-cmp. In that code, I retrieve the C++ structure of the design of a verilog netlist, and then I do heavy operations on that structure. To make the execution faster, I would like to multithread the operations. So I multithreaded my functions, I added the -pthread flag in the tgt-cmp/Makefile.in file, I generated the Makefile with the ./configure etc. But when I run the program, it gives me the famous error "Enable multithreading to use std::thread: Operation not permitted". Then I saw this post: #495 and I wondered if things evolved from the date of this question or not ? Also, the answer of this post says it is a hard thing to use multithread with IcarusVerilog, but it does not say that it is impossible. Would you have any comment or advice on how to make C++ multithreading work with IcarusVerilog please?
Thanks you a lot!
Beta Was this translation helpful? Give feedback.
All reactions