-
Notifications
You must be signed in to change notification settings - Fork 25
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
Altering port lists with duplicate ports causes incorrect connectivity #73
Comments
One workaround is to explicitly flattened the subcells with mismatched port names. |
Size errors due to flattening are caused by asymmetrical (explanation follows) flattening and are liking due to a bug in the parallel deduction routine. If the netlists are flattened symmetrically, they match.
Original verilog
Preflattening example gives
First comparison of flattens unmatched cells in both
and
The second comparison further flattens the layout, resulting in a topology match but size errors.
The data in the attached tarfile produces the error with netgen 1.5.251
Check |
(@d-m-bailey : If I correct the setup file to update it with respect to a number of changes and corrections made in the last year or so, then this circuit passes LVS just fine. The problem is that it is using a custom setup file that was apparently created a long time ago and not kept up to date with changes made in the PDK.) EDITED---Never mind, I thought I had put the flattening of the subcell under the top in the script, but I hadn't. Adding it makes the problem come back. But why is tiny_user_project being flattened anyway? Edited again---Actually it's not even the flattning of tiny_user_project that makes the difference, it's the equating of prefixed cell names to non-prefixed cell names. Still investigating. |
@RTimothyEdwards thanks for looking into this. The workaround is to flattened both the layout and netlist cells, so this is not critical. If you could reread my first comment, it might make a little more sense what's going on.
So the standard cells in verilog don't match what's in the layout at this level, so they're flattened to the device level and In the next round, the layout is flattened to the device level.
The reason I'm flattening the
Preventing flattening by looking ahead to see matches in the hierarchy would also result in a clean LVS run, but there is still the underlying issue that flattening causes size errors. I think even if the design is flattened to the device level, LVS should pass. Could this be an overflow problem? |
@d-m-bailey : Ha, I got caught once again staring at the comment in my code that said "still left to do. . .". I had not implemented the code to handle a subcircuit property M > 1 when flattening the subcircuit. It's actually an easy implementation. I guess I had just jotted down the comment and never got back to it. I am pushing the fix now (version 1.5.253). I would have posted this earlier but I got a segfault on the original example and just got around to fixing it. Everything is pushed now to opencircuitdesign.com. |
@RTimothyEdwards Great! Looks like this should deal with the mismatched flattening. But what about the size errors? If the there's a situation that requires flattening to the device level, the sizes would be expected to match, right? |
@d-m-bailey : No, the size errors are a result of failing to copy the number of devices for M during flattening. At the last stage, netgen sees that the device counts don't match, so it makes a last-ditch attempt to see if the total area (for diodes) matches on both sides. Probably it would be more meaningful for the LVS output if after that it could back-track to the original error (mismatching M) and report that instead, since that would be the more likely error. |
See RTimothyEdwards/magic#232
The text was updated successfully, but these errors were encountered: