-
Notifications
You must be signed in to change notification settings - Fork 68
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
Efficient backtracking from output ports to input ports #3975
Comments
@mysoreanoop do you intent to contribute your code to main? (Hint: If you don't, no help :-)) |
I'd be happy to contribute back. I can get started with a preliminary PR and we can build on it, or I can develop on it separately and pull when ready; your call. |
Hello Is it a step forward to solve : chipsalliance/UHDM#1037 |
@Thomasb81, It is indeed a step toward: chipsalliance/UHDM#1037 |
I'm trying to backtrack output ports from the topModule this way:
1a. Parse all continuous and procedural assignments.
1b. For each assignment, populate an lhs2rhs map (vpiFullName is used as unique ID).
2. Parse all submodule instances for IOs: form a lowConn to highConn map called io2net map.
3. Starting at the topModule, get the ports, vpiDirection, and if it's an output port:
4a. Search lhs2rhs, io2net map:
4b. If found, recurse to 4a
4c. Else if topModule's input port is reached, end.
4d. Else if constant or parameter, end.
4e. Else mapping not found / other cases.
Is there a more efficient way to do this without having to parse all assignments and submodule IOs?
Specifically, given a vpiHandle to an output port, could I get all the sources of that port/net and keep doing that recursively?
Would procedural assignments with if-else branches complicate things?
The text was updated successfully, but these errors were encountered: