Add two new options to the splitnets pass:
- `-ports_only`: Split only module ports, not internal signals. This is
useful when you want to split ports for interface compatibility while
keeping internal signals as multi-bit wires for better readability.
- `-top_only`: Apply splitting only at the top module level, not in
submodules. This is helpful for hierarchical designs where you need
split signals only at the top-level interface.
These options can be combined with existing flags:
- `splitnets -ports_only`: Split all ports in all modules
- `splitnets -ports_only -top_only`: Split ports only in top module
- `splitnets -ports -top_only`: Split both ports and nets only in top
Add comprehensive tests that verify wire/port counts for all flag
combinations using a hierarchical design.