-
Notifications
You must be signed in to change notification settings - Fork 40
How to get SystemC IR information? #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi, The compiler is not intended to extract IR. The IR internally extracted at multiple passes to get enough data to generate SV code. -Mikhail. |
Hi, Systemc is actually executed serially. We want to analyze from the AST which processes can operate in parallel, thereby making systemc execute faster. Writing a compiler from scratch is very time-consuming and requires strong software programming skills, so we want to find some open source projects that can help us realize our research. Thanks |
SystemC can run process in multiple threads if it is configured with What kinds of information do you need for your approach? Have you published your approach (then please send a link) or could you outline it? -Mikhail. |
Hi, We currently have some ideas to determine the execution order between different processes by analyzing the data competition relationship between different processes, and try our best to ensure that threads without data competition can truly execute in parallel. What kinds of information do you need for your approach? The reason we are doing this work is to validate the ideas of our paper, and if progress goes smoothly, we are certainly willing to open source. |
Suppose, you mean under "data competition" data dependeciens between processes, i.e. if process1 uses some data from process2. In cycle accurate SC: processes in the same module interacts through sc_signal, processes in different modules interacts through sc_in/sc_out.
There is another problem with mapping processes to OS threads. Do you have a solution for that? -Mikhail. |
Hi, That why I want to know how to get SystemC ast or IR information. Thanks |
Hi, Thanks |
Hi, |
Hi, Will share some information about internal implementation and structures. The code is self documented, so you need to read and understand comments. If you can formulate which exact relations you need, I could try to propose some solution. But, you can go by yourself. We did not work on parallel execution, and generally I do not believe in success. Cycle-accurate designs usually are fine-graned, each process does small piece of work and depends on other process almost every cycle. It is possible to write the code in another style, but it requires additional effort. -Mikhail. |
Hi, Maybe I didn't describe my needs well. Actually, what I want to do is Thanks |
In synthesizable SystemC only channels (sc_signal/sc_fifo) can be used for interprocess communication and only one process can write to the channel. Non-channel variable cannot be used for that. ICSC reports error if two processes access a non-channel variable or two processes write to the channel. TLM2 is not synthesizable and not supported by ICSC. Two processes cannot be run independently if one of the processes takes results from another. Information of used/defined variables by processes (including channels) extracted and used to distinguish |
Thank you very much for your reply, |
@megleo Accessing the AST is possible as suggested by @mikhailmoiseev to extract some of the SystemC behaviour you require. I had done something similar in a project systemc-clang. But, this is purely a static approach. It does have an IR, although not as well documented, but it is available. You could adapt some of the code from there and use it with systemc-compiler to get your desired behaviour. Hope this helps. |
Hi,
I am considering how to parse system c syntax and would like to obtain some information about system c programs from syntax analysis, in order to do some optimization work.
So can you help me explain the code structure of your project? Or is there any relevant document describing the structure of the project?
Any help would be greatly appreciated
The text was updated successfully, but these errors were encountered: