Closed soneryaldiz closed 2 years ago
@Lastdayends , @stevenmburns , let's start baking this enhancement as well. Option#1 is acceptable and easier to start with.
@soneryaldiz
We need to discuss what is the inputs to the PnR.
@Lastdayends
Inputs for the PnR can be as simple as the JSON serialization of the classes. Example:
[
{'constraint': 'RoutePower', 'nets': ['vccx'], 'style': null},
{'constraint': 'RouteGround', 'nets': ['vssx'], 'style': 'signal'}
]
Is this sufficient?
@soneryaldiz
This is sufficient to define all pins of a certain net as power/signal pins.
But do we have the requirement, which define part pins of a certain net as power/signal pins?
@Lastdayends
Not quite sure if I understand your point. Let me try to simplify the enhancement: I think this constraint can be primarily handled by the compiler:
Therefore, this constraint is primarily consumed by the compiler. For PnR, we can make introduce an additional constraint:
class DoNotRoute():
nets: List[str]
where router should ignore the nets in the above list.
Adding @kkunal1408 for input.
@soneryaldiz
So you just want to define whether the original power net (original power net is defined in the verilog file) should be tried as:
A power net might include several pins. Our detailed router do the routing for each pins.
That is correct. 1 & 2 above are already done in the current implementation. 3 is the new feature and can be generalized beyond power nets using DoNotRoute
constraint which should be sufficient for the routing algorithm.
@soneryaldiz
I see.
Is there a testcase, so I can implement and do a test?
I will provide a test case in a few days to get started.
@soneryaldiz
Got that. Thanks!
Allow user to specify whether power and ground nets should be:
Tasks:
Option#1:
Option#2: Combine to a single constraint that can later be extended to specify grid pattern: