Import a layout using Encounter

K

Konx

Guest
Hi all.

I have the following problem:

I have a full-tested design (called Pixel) in schematic version. After
various simulations (with cadence Virtuoso) using testbenches, I am
able to extract the verilog netlist of the Pixel. With this netlist, I
run Encounter and I can import the design (basically, I import the
netlist and a floorplan) and obtain the layout of this Pixel.

Now, I have a "block" called 'Oscillator' that is NOT in the verilog
netlist. This oscillator has is own schematic and his own layout, but
in Cadence Virtuoso.

The oscillator has to be connected with the Pixel. Obviously, it is
simple to do this thing in a schematic.

The question is: is it possible to import the layout of the oscillator
in Encounter and connect it properly with the layout of the pixel? The
point is that I can't use a schematic with Pixel and oscillator
connected and then extract a netlist, because we want to use the
Oscillator layout that we already have.

I tried to read the encounter manual, and it seems to me that I have
to import the Oscillator as a 'module', but the process is not clear.

Someone know how to do? :)

Thanks for help!

Francesco.
 
On Jul 21, 4:53 pm, Konx <cesco...@gmail.com> wrote:
Hi all.

I have the following problem:

I have a full-tested design (called Pixel) in schematic version. After
various simulations (with cadence Virtuoso) using testbenches, I am
able to extract the verilog netlist of the Pixel. With this netlist, I
run Encounter and I can import the design (basically, I import the
netlist and a floorplan) and obtain the layout of this Pixel.

Now, I have a "block" called 'Oscillator' that is NOT in the verilog
netlist. This oscillator has is own schematic and his own layout, but
in Cadence Virtuoso.

The oscillator has to be connected with the Pixel. Obviously, it is
simple to do this thing in a schematic.

The question is: is it possible to import the layout of the oscillator
in Encounter and connect it properly with the layout of the pixel? The
point is that I can't use a schematic with Pixel and oscillator
connected and then extract a netlist, because we want to use the
Oscillator layout that we already have.

I tried to read the encounter manual, and it seems to me that I have
to import the Oscillator as a 'module', but the process is not clear.

Someone know how to do? :)

Thanks for help!

Francesco.
Hmm,

I think you'd want to create a lef from the oscillator layout (it's
somewhere in the docs, I haven't time to check - define blockage, pin,
etc. ), layer mapping... & maybe a verilog file (or whatever netlist -
I haven't come across any schematic to verilog work yet) from the
schematic.
Usually I hear the work being done is the other way round - Encounter
design to Virtuoso.

Best regards,
I-FAB.
 
I-F AB wrote:

I think you'd want to create a lef from the oscillator layout (it's
somewhere in the docs, I haven't time to check - define blockage, pin,
etc. ), layer mapping... & maybe a verilog file (or whatever netlist -
I haven't come across any schematic to verilog work yet) from the
schematic.
Usually I hear the work being done is the other way round - Encounter
design to Virtuoso.
Thanks for the answer!

I think you're right, it should be simpler to export from Encounter to
Virtuoso;

the LEF file generation doesn't seem a simple process. I'll study both
methods and see which is the best :)

Francesco.
 
Hi Francesco,

I did this on a schematic block that contained 3 analog blocks laid
out using VXL and 1 digital block that wasn't laid out. I Created
abstract views of the 3 analog blocks using the Abstract Generator.
One the abstract view is created you can then output a LEF file of the
block. I then created a verilog netlist of the schematic the contained
all 4 blocks. When I imported into Encounter I included the LEF files
of the 3 analog blocks along with the standard digital library LEF. In
the floorplan stage I moved the 3 analog blocks where I wanted them
placed around the digital reference. Encounter placed the digital
block standard cells and routed all their connections and the
connections to the analog blocks.

Note: The digital block was a transistor level schematic.

Tim
 
On Jul 21, 10:53 am, Konx <cesco...@gmail.com> wrote:
Hi all.

I have the following problem:

I have a full-tested design (called Pixel) in schematic version. After
various simulations (with cadence Virtuoso) using testbenches, I am
able to extract the verilog netlist of the Pixel. With this netlist, I
run Encounter and I can import the design (basically, I import the
netlist and a floorplan) and obtain the layout of this Pixel.

Now, I have a "block" called 'Oscillator' that is NOT in the verilog
netlist. This oscillator has is own schematic and his own layout, but
in Cadence Virtuoso.

The oscillator has to be connected with the Pixel. Obviously, it is
simple to do this thing in a schematic.

The question is: is it possible to import the layout of the oscillator
in Encounter and connect it properly with the layout of the pixel? The
point is that I can't use a schematic with Pixel and oscillator
connected and then extract a netlist, because we want to use the
Oscillator layout that we already have.

I tried to read the encounter manual, and it seems to me that I have
to import the Oscillator as a 'module', but the process is not clear.

Someone know how to do? :)

Thanks for help!

Francesco.
Hi Francesco,

First you need to generate a LEF file of the oscillator block, as
other have also stated.

Second, you need to write a new Verilog netlist in which you describe
the connections between the oscillator and the rest of the design
(=Pixel). This will be your top-level netlist. Naturally to do that,
you need a simple Verilog netlist of the oscillator block, basically
describing the input/output pins.

Assuming that you don't worry about timing for now, you should then
feed all these files to Encounter.

Hope it helps.

/Ilhan
 
On Jul 21, 10:53 am, Konx <cesco...@gmail.com> wrote:

[cut]

Hi!

At the end, I've been able to solve in a simple way the previous
problem (just to explain: I reserved the correct space for the
oscillator block in Encounter using the createObstruct command...so, I
simply skipped the problem of importing the layout of the oscillator
to encounter :D)

Obviously, now I have another problem related to this ^^

I have a complete design in Encounter of the Pixel block, and I want
to export it to cadence virtuoso. Reading on internet and the help,
I've seen that I have to export a GDSII file (basically, I can produce
2 file: the outputStream called pixel_output_stream and the Map file
streamOut.map).

Now, I'm trying to import these file using File --> Import --> Stream
in the CIW window of cadence.

In the Stream File field I specify the path to pixel_output_stream,
while I use the map file in the Layer tab that I can find clicking on
option (here I can upload the map file).

Obviously I specify even the tech library (cmrf8sf, Arti2009DM and
others).

then, I click Translate (I think this command generates the layout),
and I receive an error (no write permission)

Is the process correct? Am I missing something important?

And, as a general question: the OpenAccess way to save the design,
could be used to do the export-import process from Encounter to
Virtuoso?

Thanks in advance

Francesco.
 
Ok, let's be more specific now that I've tried some different things:

I can import the design in Virtuoso, but still the final result is not
correct; I have this error:

ERROR (58): Failed to create the new layer purpose pair 'DIEAREA:ALL'.
It will be skipped and all the shapes on this LPP will be dropped.

I have this error 163 times, exactly the number of the Stream layer
that I can see when I upload the streamOut.map file.

The final result (in Virtuoso) is a design with correct shape and with
all the cells (flip-flop, etc...), but with no routing between cells
(but I did it in Encounter) and without supply and ground rings
(again, I did it in Encounter).

Suggestions?

Francesco.
 
Hi Francesco,
Are you using OA (OpenAccess)? If so, I bellieve you don't need to
stream out GDS (I haven't used OA yet).

If you're using cdb (Cadence DataBase), you need to have 2 mapping
files: 1 to stream out from Encounter & the other to stream in to
Virtuoso.

I suspect your having problem with the streaming part since only cells
are shown but not routing layers (cell gds should already have
diffusion, etc.).

E.g. of stream out file:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
METAL1 NET 1 0
METAL1 SPNET 2 0
METAL1 PIN 3 0
METAL1 LEFPIN 4 0
METAL1 FILL 5 0
METAL1 VIA 6 0
METAL1 VIAFILL 7 0
METAL1 LEFOBS 8 0
NAME METAL1/NET 9 0
NAME METAL1/SPNET 10 0
NAME METAL1/PIN 11 0
NAME METAL1/LEFPIN 12 0
VIA12 FILL 13 0
VIA12 VIA 14 0
VIA12 VIAFILL 15 0
--------------------------------------------------------------------------------------------------------------------------------------------------------------

E.g. of stream in file:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
#Cadence Layer(M*foundry*) Layer Purpose Encounter Stream layer
Stream Datatype
viap1 drawing 1,2,3 0
met1 drawing 4,5,6,7,8,9,10 0
met1I drawing 11 0
met1T drawing 12,13,14,15 0
viam1 drawing 16,17,18 0
--------------------------------------------------------------------------------------------------------------------------------------------------------------

As you can see, some layers from Encounter were merged so they lose
functionality in Virtuoso.
BTW, these were from 2+ years ago when we were doing a quick fix. I
don't think they've changed the format though.

Best regards,
I-FAB
 
On Aug 3, 9:50 am, I-F AB <cop0...@gmail.com> wrote:
Hi Francesco,
Are you using OA (OpenAccess)? If so, I bellieve you don't need to
stream out GDS (I haven't used OA yet).
Hi.

Thanks for your answer.

I haven't tried the OpenAccess yet, maybe I'll try to see what happen
using it.


If you're using cdb (Cadence DataBase), you need to have 2 mapping
files: 1 to stream out from Encounter & the other to stream in to
Virtuoso.

I suspect your having problem with the streaming part since only cells
are shown but not routing layers (cell gds should already have
diffusion, etc.).

E.g. of stream out file:
[cut]



Ok, this streamOut file is generated by Encounter (I checked the file,
and it looks like the one in your example).


E.g. of stream in file:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
#Cadence Layer(M*foundry*) Layer Purpose Encounter Stream layer
Stream Datatype
[cut]

The problem is with this file. Do you know if I can find it somewhere?
I mean, is it a file that is provided with the technology libraries,
is something that should be generated by Encounter or Virtuoso, or is
something that I have to generate by myself following some rules?

Moreover: if I have these 2 map files, what file I need to specify in
XStream? If you go to CIW --> File --> Import --> Stream and click on
Option and then select tha Layout tab, here you can specify a map
file. At the moment I'm uploading the streamOut.map generated by
Encounter. Do I have to specify the other one (supposing I'll be able
to find it out)?

Sorry if these are stupid questions, but for me these are all new
things :)

Anyway, thanks again for help!

Francesco.
 
Hi Francesco,

These files were 'hand-made' text files. Both mapping files needed as
far as I know.
:)
There's documentation somewhere (look for mapping & streaming).
Gotta go, so afraid can't help you for now.

Best regards,
I-FAB
 
We stopped using the gds out from Encounter and streamin to Vituoso.
We are now using DEF out from Encounter and Import DEF into Virtuoso.
This works well as long as your standard cell library has abstract
views. You just need to select all the cells and switch the views to
layout once in Virtuoso. This also creates the pins for you and if you
write a macro that loops through the cells and adds the | character to
the front of the instance name it also makes the cell VXL compliant.
Minor changes can now be made easier by using VXL.

Tim
 

Welcome to EDABoard.com

Sponsor

Back
Top