• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. LVS on a layout imported from Encounter versus the Physical...

Stats

  • Locked Locked
  • Replies 14
  • Subscribers 125
  • Views 22795
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LVS on a layout imported from Encounter versus the Physical Verilog netlist

Kabal
Kabal over 11 years ago

 

 

I have successfully imported the layout from Encounter, and solved out the residual DRC errors, however; I am not sure now how to do LVS.

Before I had some problems with import which were covered in another subforums here and topics but I solved them all, right now I want to concentrate just on a specific LVS on Encounter Imported Layout issue. 

 

Here are my actions:

 

1) get the verilog design synthesized properly and routed without geometry/connectivity violations in Encounter [DONE] 

 

2) Properly export it to GDS file [DONE] 

 

3) do saveNetlist -phys -includePowerGround from the Encounter, it basically produces a Physical Verilog netlist, which includes cell description + Power pins. [DONE]

 

4) Go to Cadence Virtuoso, do CIW->Import->Verilog, there I point to the physical verilog netlist produced by  Encounter and also point to the newly created library based on technology kit with imported proper metal layers.

 

5) then i start the process of importing scehmatics for CDL, I see that the cells are created one after another, and the main big schematics is created, where each module of the schematic is the standard library cell. However, when I click and get inside that cell I see only ports, and no transistors.

 

It might look OK, since afterall it has imported physical VERILOG netlist, not a transistor schematic.

But problem starts when I try to produce CDL netlist using the IBM provided Perl script for the LVS. The final output of that script is MY_INSTANCE_NAME.netlist.lvs

 

However, when I start now doing LVS on the corrected/DRCed Layout, I get errors like:

a) nMOS on layout is unbound to any schematic device

b) pMOS on Layout is unbound to any schematic device

c) subC on Layout unbound to schematic device

 

Error (c) is OK, I can fix it simbly by adding the substrate contact in the imported schematics. 

(reason for that  is that DRC does not pass without proper amount of substrate contacts on a layout, so in an imported layout I added them.. but then again, I added it also in the schematic, so error (c) was gone)

 

However, what really weird is: why do errors (a) and (b) exist?

 

From one side, I understand, it does not SEE the transistors because the cells imported from physical verilog dont have one (because verilog describes hardware flow not transistor interconnect)

 

But from another side, why would it even try to find transistors?

 

Why does not it treat my imported layout cells as a standalone modules with just ports, because that is what they are.

 

I even tried creating CDL netlist in "Digital" format from the imported schematics view, same thing.

 

Am I missing something trivial here? 

 

Any ideas?


  • Cancel
  • Alex Soyer
    Alex Soyer over 11 years ago

    Hello Kabal,

    If you have in your top layout view some layout representation for the standard cells which contains transistors but your schematic view representing the standard cells are empty then your LVS tools is going to report them.

    Most of the time founders provide a CDL file which contains the transistor description of your standard cells then you need to include into the netlist one your feed to your LVS file.

    Thanks,

    Alex 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kabal
    Kabal over 11 years ago

    Ok, I do can find the CDL file with standard cells. It seems that I am kind of close to solution but still have some questions.

     Now I guess question is, how exactly I include it?  Here are my steps:

     

    1) Create CDL netlist from schematic which is imported from verilog (that schematic contains only instances of standard cells)

    2) Use the script to transfer CDL netlist to LVS format 

    3) Go to LVS, in the LVS include the schematic netlist in LVS format obtained from step (2), and also include pure CDL file from standard cell library with all descriptions of standard cells.

    As a result, this time LVS doesnt fail, however; it reports about thousands of mismatched layout<->schematic devices, like transistor width mismatch etc.

    Seems like I am really close, but just missing something, what else had to be done there? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Alex Soyer
    Alex Soyer over 11 years ago

    Hello,

    We are making progress this is great.

    In step 2 why did not you run teh same script ofr teh std cells cdl ? Isn't it required is the format already ok?

    In order to easily debug it I would suggest that you look at one std cells at a time.

    You could for exmaple run a LVS on one std cells like the most basic invertor that you have in your design.

    Thanks,

    Alex 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kabal
    Kabal over 11 years ago

    Alright, in step 2 I did choose just CDL now. (i noticed that it doesnt matter)

    Here are my actions/observations:

    1) I opened schematics of imported inverter (again, its schematics contained only *pins* and nothing else)

    2) Export netlist

    3) Apply CDL processor to convert it to LVS netlist format

    4) Go to layout,  start LVS window, there point it to two files, one file produced from empty schematic in step (3), another file is std. lib CDL file.

    As a result two major errors were reported like something described below:

    a) Terminal B of pMos should be connected to VDD! instead of floating pin.

    b) Terminal B of nMOS should be connected to GND! instead of floating pin.

     At this stage, let me tell something: When I design for example some custom inverter by hand in my own libs, and when I lay it out, I always put Nwell and Substrate contacts in a layout. But in a schematic I put only substrate contact primitive. Then I pass LVS.

    Now back to this issue, error (2) was manually corrected simply by putting Nwell contact, after that when I ran LVS it only reported me error (b)

    However, when I try to correct error (b) by putting substrate contact and then run LVS, the LVS process *FAILS*, and in the log it says that substrate contact on a layout is unbound to schematic. I tried to put substrate contact with GND! connection on top in a schematic, it didnt help.

    And by the way, is it kind of a pain generally one has to deal with when working with Encounter layout import? (what I mean is the mess around with nwell/substrate contacts) ? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Alex Soyer
    Alex Soyer over 11 years ago
    Kabal, Is the layout view provided by your founder? I'm quite surprised to see that you don't have a full match between basic inverter GDSII and CDL. Can you check the Bulk pins connections in layout? Most of the time the std cells have top and bottom power and ground rails and under these rails you have substrate or nwell connections. You r transistors should be connected to these substrate connections using a diffusion layer pwell or nwell but it should not be needed to add substrate contact or nwell contact. Did you check your layer map file and your rule deck? Thanks, Alex
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kabal
    Kabal over 11 years ago

    >Kabal, Is the layout view provided by your founder? 

    Yes. They provide GDS file, which I independently imported to my library, and could see all the layouts and open them in layout editor. And during GDS export from Encounter, I merged the final GDS of my design with the GDS file of the standard cells. That is how I had to do it for all the layers to show up correctly.

    >Did you check your layer map file and your rule deck? 

    During that export process I pointed to the MAP file provided by customer as well, that MAP file was specifically made for Soc2GDs transition. Rule deck? whats that? You mean LEF? yes they were provided to Encounter

     >Can you check the Bulk pins connections in layout? 

     There are *no* ones. When I imported the GDS file produced by Encounter in a way described above, the fresh library to which everything was imported had the standard cells, like INVERTER which I messed with before. And that Inverter, and all other type of pins have VDD! and GND! routed metals on top and bottom, but they do *not* have contacts to well or substrate. Which is weird right? I also did import the standard cell GDS manually from virtuoso to a separate library, and the layouts of each elemnts also do *not* have contacts to well and substrate.

     >You r transistors should be connected to these substrate connections using a diffusion layer pwell or nwell but it should not be needed to add substrate contact or nwell contact. 

    So that is how things done normally with most Kits right? I mean is that how the big digital projects get done then, tool (Encounter+Kit LEF) takes care not only for net interconnect but also properly should place Nwell/Substrate contacts, right? Turns out that it is not a case then for me.. Does it mean a *HUGE* nightmare to design/route/LVS in Virtuoso a really big digital project? Or maybe there is something I missed during setup of flow and thats why it appears like that? Because, actually theres not much to do, all one does is a) provide LEF, b) provide RTL synthesized verilog c) route d) export GDS, e) import in Virtuoso f) DRC in virtuoso g) LVS in virtuoso. Seems like I am stuck on (g) but if tool didnt place contacts (or didnt take care of it) then I am stuck with (f) too because I *must* place them.  

    So, the way it looks to me now is that lots of stuff is now concentrated on this issue of bulk pin connection. Because if I place it, the schematic would require it to be there. But standard CDL files usually dont have those entities. So it complains. So if I am correct, I must somehow 1) Make encounter to put bulk connections/contacts during routing 2) somehow resolve the substrate contact issue.

    You ever came across such situation? i.e. standard cell layouts without bulk connection and same during autorouting in Encounter? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Alex Soyer
    Alex Soyer over 11 years ago

    Hi Kabal,

    Can you try to go for LVS without importing the GDSII in Virtuoso ? You can use the GDSII exported directly out of Encounter.

    With this trial we will check if teh probelm is potentially due to the GDSII import in Virtuoso 

    Thanks,

    Alex 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kabal
    Kabal over 11 years ago

    Here are three ways I tried:

    1) After encounter auto-routing done, just produce physical verilog netlist and GDSII. Then Run LVS and as a netlist point two files: produced physical Verilog netlist and CDL library, and as layout source GDSII. Result: LVS failssaying something like "duplicate subckt name AND2_F in .CDL file of standard library. Its weird that it complained only on that gate..

    2) After encounter autorouting, produce physical verilog netlist and GDSII, run LVS and point only to verilog netlist as netlist source, and to GDSII as layout source. Result: LVS fails saying unbound nMOS/pMOS.

    3) After auto-routing done, do add FILL1. Then produce physical netlist, and do LVS again, LVS failing saying that: FILLER1 not defined. 

     I have a feeling that something is wrong with FILLER/Conencting the substrate contacts when I do LVS versus imported Layout. But as you saw now, doing LVS with Stream looks even worse.. 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Alex Soyer
    Alex Soyer over 11 years ago
    For solution 1: you should not include leaf cells description into teh physical verilog generated out of EDI. By default some LVS tools stop after a first duplicate and do not look at any other cells and it sounds like by AND2_F was first in your CDL file.
     
    For solution 2: same soluation as previous one.
     
    For solution 3: you need to tell to your LVS tool (which one) that it should ignore the empty cells  
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Kabal
    Kabal over 11 years ago

    OK, following Solution 3, but I have problems with setting ignore on empty cells. I have three types of FILL cells: FILL1, FILL2, NWSX. And it seems to me that the ignoreCell avParameter of LVS only works for Layout view, not a Stream.

    But here is anothe thing I did, I think I am really close to solution:

    1) In the encounter after final routing done, add: FILL1, FILL2, NWSX

    2) Produce GDSII by merging with GDS of standard cells

    3) Import that GDSII in Layout in Virtuoso, guess what, now when I do DRC I *DO NOT* see those missing well/tap contact errors anymore. In other words, it looks like now DRC is clean (just some IO port misalignment on Pin layers, but that was fixed really quick). So, it looks that I do not have to add those substrate contacts in schematics or whatever to pass LVS, all I need now is just to pass LVS.

    However, problem is, that once I start doing LVS of this nicely imported layout with clean DRC, I again get errors like: FILL1, FILL2, NWSX not defined.. and that ignore method described above doesnt work.  Even though now, I do LVS over the Layout... so it should work. I attached picture showing avParameter for ignore cells. 

    I tried already all kinds of combinations, doing ignoreCell both for layout and schematic (by showing verilog file) in avCompare rules as well. its still same! LVS fails with saying that: FILL1, FILL2, NWSX is not defined.. it just doesnt make sense, am I missing something?

    Any ideas? 

    • ignore_cell_setting2.png
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
>

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information