Skip to content
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

Emulated substrate ground shortening results in undefined behaviour in other simulators #54

Open
heavySea opened this issue May 5, 2021 · 1 comment

Comments

@heavySea
Copy link

heavySea commented May 5, 2021

The mgmt_protect_hv.v of the Buffer Protection contains a section to emulate the substrate shortening ground together, which was introduced with 4d78284.

assign vssa2 = vssa1;
assign vssa1 = vssd;

It is stated to be required for LVS.

In all testbenches there is only one source of ground, wire VSS = 1'b0;. In simulators other than iverilog (i.a. Questa/Modelsim) this and the above assignment will result in an undefined behavior, since the signal is essentially assigned to itself multiple times.

There are two possible solutions:

  1. Defining separate ground signals in the testbenches (Although in reality it is most probably the same ground?)
  2. Exclude this part from simulations since it is stated to be required for LVS only. This could be done like this
`ifndef SIM
    assign vssa2 = vssa1;
    assign vssa1 = vssd;
`endif

Note, this is not reproducible with iverilog!

@RTimothyEdwards
Copy link
Contributor

Magic was updated since the issue was raised to better extract independent substrate domains. That was accompanied by a layout change to the management protect block to isolate the ground domains. That means that the extracted layout now keeps the ground domains separate, and the assignments should not be needed for LVS, so this needs to be revisited.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants