Documentation

46 views
Skip to first unread message

Laura L.

unread,
Jul 28, 2021, 1:05:46 PM7/28/21
to RapidWright
Hi,

I was wondering if there was a more comprehensive description of the classes/methods available in RapidWright? I've been mainly using the Javadoc, but the descriptions are usually pretty short and sometimes I'd like to know more specifics of what a method call is doing.

Thanks,
Laura

RapidWright

unread,
Jul 28, 2021, 2:00:54 PM7/28/21
to RapidWright
Hi Laura,

One additional resource would be the tutorial paper from FPGA'2019: 


(this is referenced on our publications page, which also has a link to the slides when it was presented).

Beyond this, the Javadocs and overall documentation are the most comprehensive source of information.  If you feel like there are classes/concepts that could you additional information, please let us know.

Chris

Laura L.

unread,
Aug 9, 2021, 2:32:53 PM8/9/21
to RapidWright
Hi,

This is tangentially related, but to avoid starting another thread, I'll ask along this one. Is there a way to automatically route only one net inside of a site? I've seen the SiteInst.routeSite() and SIteInst.routeIntraSiteNet methods but there doesn't seem to be an intermediate step between these in that routeSite routes every net in the site while routeIntraSiteNet has the ability to route only one net, but requires inputting the exact BELPins. I was hoping for something like routeSite where I don't have to input the BELPins but can also just route one net at a time in case only a few nets are problematic for the "special cases" that RapidWright works on for intra-site routing.

Thanks,
Laura

RapidWright

unread,
Aug 10, 2021, 3:46:20 PM8/10/21
to RapidWright
Hi Laura,

That is a good question and some valuable feedback.  The SiteInst.routeSite() method should cover your situation, but I can imagine that if it is not working correctly, that might prompt a need for a more specialized method.  Unfortunately, site routing is a bit complex and although a method could be written to route a single net inside a site, it would have to replicate much of the functionality of SiteInst.routeSite() and would be somewhat redundant.  

Would you be able to share what specific case or use cases where this would be useful?  You mention some "problematic nets", can you perhaps describe them or provide an example design that exhibit the issues you are seeing?

Thanks,

Chris

Laura L.

unread,
Aug 11, 2021, 8:27:28 AM8/11/21
to RapidWright
Hi,

Yes, I noticed that when I run SiteInst.routeSite() on a certain site, it throws a RuntimeException with the error that it is unable to route a net in the site I provided. However, SiteInst.routeSite() is only failing because of one net within the site. I realized this when I commented out that net throughout my code and SiteInst.routeSite() was able to route all other nets in the site perfectly fine. However, because I wanted to include this one net, I needed to more manually route the entire site, using SiteInst.routeIntraSiteNet, which I found a bit tedious to give the BELPins of the source/sink of all the other nets when I knew that RapidWright was capable of doing everything automatically for those nets. For the "problematic net," I had to explicitly give the routing BELs it went through when using SiteInst.routeIntraSiteNet, but this was expected. I think being able to route a single net inside of a site automatically would be useful in this case since it could avoid having to deal with the BELPins explicitly for every net in the site.

As for the "problematic net" itself, I assumed that it exhibited this behavior due to the "special cases" mentioned in https://www.rapidwright.io/docs/Implementation_Basics.html#routing. I noticed that this net had to go through two routing BELs, as opposed to the one that the other nets went through. Other than this, there did not seem to be anything particularly special about it, just routing from the output of a flip flop to an OBUF. My main use case was to avoid having to more manually route for the other unproblematic nets when SiteInst.routeSite() fails but only due to a relatively small number of nets.

Thanks,
Laura

RapidWright

unread,
Aug 11, 2021, 1:55:00 PM8/11/21
to RapidWright
Hi Laura,

RuntimeExceptions should not happen.  I would be interested (if you are able to share) the specific design or an equivalent case that produces this behavior.  If you could file an issue on the RapidWright GitHub repo, that would be really helpful.  If you could provide enough information and/or an example DCP that allows us to reproduce the behavior, we can address the issue.  

I do resonate with the desire to have more control over the routing.  In this case, the complexity involved in routing site nets makes development of a SiteInst.routeSiteNet() more costly than other requests.  Ideally, we should be able to address the error you are running into with SiteInst.routeSite() much easier than implementing a method to work around it.  

Thanks,

Chris

Laura

unread,
Aug 12, 2021, 12:13:23 PM8/12/21
to RapidWright
Hi,

Ah, actually, I think I found an issue in my code that made the error occur. I was confused since it was in the same line as the routing, but my site was just not placed properly. Thank you for your help anyways!

Laura

Reply all
Reply to author
Forward
0 new messages