Jump to content

Parallelization of RDL file compilation

Recommended Posts


I was interested in checking if it is possible to run compilation of numerous files in parallel.

The current scenario I have is:

Let's say I have to compile 21. 20 of those files can be divided to groups of 4 (i.e. group(i)_regfile1->group(i)_regfile2->group(i)_regfile3->group(i)_regfile4).

The end result is that I have a main address_map instantiating all 5 groups (group1_regfile1, group2_regfile1, etc..).

In theory,  If I will compile all 5 groups in parallel (as those groups are independent) I will be able to save time.

Is such parallel compilation supported? (Currently I am working with a list of files according to the dependency and compile them 1 by 1 which takes some time).

Also, If no such parallelization is supported in the compiler, is it possible to compile using threads and save the result to a local file (and then loading all those files for the compilation of the last object).


Thank you in advance!

Link to comment
Share on other sites

Hello Or Shalom,

First, the compile time of SystemRDL has not been an issue even for designs with millions of registers.  Most compiles are much less than a minute. Second, the SystemRDL language is not well suited to parallel compiles.  There is no provision for linking in the sense that there is no way to declare the existence of a component that is defined in another file so that it can be separately compiled. The automatic offset assignment depends on knowing the size of the components. Then the dynamic property assignments would modify components separately compiled. At best you could only generate the parse tree and convert it into a linkable form. The parse tree generation represents only a small fraction of the processing time. There is a time penalty for writing intermediate files and reading them. I don't think efforts in enhancing the language for parallel compile would be rewarded with significant reductions in processing time. It may still be worthwhile for other reasons. However, the committee would need to see some strong use cases.

Link to comment
Share on other sites

Hi Richard,

I thought I'd share the motivation in case this requirement will ever come up:

Our work methodology is as such:

1. We have ~40 relatively small RTL designs (IPs), the compilation of each IP (elaboration excluded) is approx. 15-20s. (there is some dependency between the designs).

2. We have a large RTL design (SoC) which instantiate all the IPs (both in RTL and RDL). The compilation time (again, without elaboration) of that address map is approx. 8m.

3. At some design stages this process might run few times a day, resulting in high compilation time.

The way I see it, running on a grid can lower that 10m to less then a minute.

Thank you,

Link to comment
Share on other sites

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.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...