-
Notifications
You must be signed in to change notification settings - Fork 120
Add svs flow (No extraction) to klayout LVS #643
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
base: dev
Are you sure you want to change the base?
Conversation
Signed-off-by: H-Ojiro <h.ojiro@shuharisystem.com>
|
Hi @FaragElsayed2, could you please take a look at this PR? |
|
@sergeiandreyev Approved, but I believe it would be better to add this switch also for the GUI options. |
|
Hi @H-Ojiro, what do you think to provide this option in GUI as well, is it a reasonable enhancement? |
|
Hi, @sergeiandreyev Thank you for your comment.
|
|
@atorkmabrains, @FaragElsayed2, your view on this? for me it's fine |
|
I believe it's fine with keeping it in the same Run Mode menu, since the netlist will already be extracted with the desired mode. |
|
@H-Ojiro What's the intent of this change? I see the switch but I'm not sure what is the target that you are trying to achieve. |
|
@sergeiandreyev To me this change looks like it stops Klayout from generating a layout netlist only. I'm not sure of how it functions: These are all the switches that the script takes:
I don't see an addition for the layout netlist. If I understand the word "SVS" ---> "Schematic Vs Schematic", I believe this code most likely will not do that. You will need to add another switch with a path for the layout_netlist, may be call it "--layout_netlist" not use the same as the schematic netlist. |
atorkmabrains
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@H-Ojiro Could you clarify?
| logger.info("LVS extracted netlist at: #{$target_netlist}") | ||
| target_netlist($target_netlist, custom_spice_writer, | ||
| "Extracted by KLayout with SG13G2 LVS runset on : #{Time.now.strftime('%d/%m/%Y %H:%M')}") | ||
| netlist_path = $target_netlist |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@H-Ojiro @sergeiandreyev This will break the original LVS as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, @atorkmabrains,
I've modified sg13g2.lvs to prevent breaking the flow as follows;
if $target_netlist
logger.info("LVS extracted netlist at: #{$target_netlist}")
netlist_path = $target_netlist
if ! SKIP_EXTRACT
target_netlist($target_netlist, custom_spice_writer,
"Extracted by KLayout with SG13G2 LVS runset on : #{Time.now.strftime('%d/%m/%Y %H:%M')}")
end
else
layout_dir = Pathname.new(RBA::CellView.active.filename).parent.realpath
netlist_path = layout_dir.join("#{source.cell_name}_extracted.cir")
if ! SKIP_EXTRACT
target_netlist(netlist_path.to_s, custom_spice_writer,
"Extracted by KLayout with SG13G2 LVS runset on : #{Time.now.strftime('%d/%m/%Y %H:%M')}")
end
logger.info("SG13G2 Klayout LVS extracted netlist file at: #{source.cell_name}_extracted.cir")
end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@H-Ojiro Could you share a working test case to validate that this is working?
|
@H-Ojiro The changes you have made don't have any test case added, could you add a small test case in the actions to validate it's working? You could add a new actions file separate from the original one and add your test case in the testing folder. |
|
@H-Ojiro If your intent is to stop the extraction of the layout netlist, I would recommend that you don't add it to the drop down menu as @FaragElsayed2 has mentioned, and you add it as a switch. As I pointed out, this will most likely break the original flow. |
@atorkmabrains The purpose of this change is to add the option to run LVS on an already extracted layout. Layout extraction requires the most time and is not necessary if only the rule files or schematic netlist changes. |
@d-m-bailey If that's the case, I believe the code won't do this. It's close, but is not exactly correct. Such change would require proper switch testing as well. @H-Ojiro Please add a test case to validate your changes. The test case should have 2 steps verification at least:
If you are willing to go the extra mile, I would recommend running the above 3 test cases with different netlist handling switches to understand the impact as well. @H-Ojiro I would like to thank you for your contribution regardless. I understand I might sound harsh. But I truly appreciate your contribution here. |
Signed-off-by: H-Ojiro <h.ojiro@shuharisystem.com>
|
Hi, @atorkmabrains Please find attached tar file: testing_svs.tar.gz which contains LVS/SVS testcases for running test on local Git repository |
|
Following @atorkmabrains 's recommendation, changed SVS option to 'Compare Only' switch box on LVS Options for GUI
|
|
@H-Ojiro Appreciate your support and patience on this, Could you please add a new action flow that would run the tests that I have listed above? |
|
@atorkmabrains Thanks for the feedback. Just to be clear, there are currently no actions that test for expected LVS failure. I believe they all test that LVS passes, right? However, you want us to add an action just for SVS that fails? There is already an action for SVS passing. |
|
@d-m-bailey @H-Ojiro I believe you need to add another input switch called: layout_netlist that provides the netlist path for the layout and you could ignore the "skip_extraction" entirely. If this is defined, then we use the provided netlist rather than the layout. |


This is an enhancement