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
-
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