Quantcast
Channel: Cadence Custom IC Design Forum
Viewing all 4907 articles
Browse latest View live

LVS error while connecting bulk with source

$
0
0

Hi,

I am drawing the layout of a schematic. Here for certain PMOS the bulk is connected to the source and both together connected to the voltage source. Now in the layout, I have drawn two voltage layers and connected them 

with metal layer 1. But still, it is not able to recognize the voltage rail for both source and bulk. 

I am using Virtuoso Layout suite version IC6.1.6-64b.500.8 along with ST FDSOI 28nm technology. LVT PMOS are being used in the design. I included the layout here as an image. I will appreciate any kind of help.

Regars

Saikat Chatterjee


probe different point on power nets in av_extracted view

$
0
0

Hi,
In my design there are multiple hierarchy and i have done the av_extraction at the top level now i want to power net at the lowest level but i am not able to do so can you pls guide me on how to do so.
I am using  virtuoso 6.1.6-64b for av_extraction and ultrasim 2016 for simulations.
Regards,
Priyankar

Spectrum assistant for FFT - How is the signal freq decided?

$
0
0

Hi,

How does the Spectrum assistant tool for FFT in ViVA decide on the signal freq for computing the SNR, etc. values?

Like, the input transient wave might have multiple frequency peaks, and I might be interested to get SNR considering the power of only a particular signal freq.

Thanks.

power drop not seen in av_extracted simulation

$
0
0

Hi,

I did simulation with ultrasim on av_extracted netlist for my design. but i see that each point in the Power supply there is an ideal voltage present (no droop in the voltage)

I am facing an issue in analyzing the Voltage droop on power nets in my design. I did the av_extraction for my design and ran it with ultraism with analog mode settings.

usim_opt sim_mode=ms analog=2 speed=5 method=gear2

usim_opt sim_mode=a subckt=chipid_bond_pad_aligned speed=5

Now I am seeing that at each of the point in the Power mesh its an ideal voltage coming (which is not real). It should show some drop. In av_extracted view I am seeing RC’s (parasitics) present on the power network.
But why its not visible in the simulation.

Is there any specific setting that needs to be used ? Or is there any other way of doing av_exrtaction to capture the Power network simulation ?

My main intention is to find the IR drop on the power network till the transistor nodes.

Regards,
Priyankar

Coupling vs. Decoupling Extraction vs. Silicon Results

$
0
0

Hi all.

I'm simulating an extracted view for a R-DAC. On my simulations results I'm seeing differences on DAC settling time between coupling and decoupling cases up to 20ns. 

 What  would be the extraction method that best fit with Silicon Results? 

My reasoning says me that coupling will be the most realistic because on decoupling method the capacitances are equally sum  and tied from each node to ground.

I think that decoupling extraction is more used to reduce computational effort.

Thanks!

Warning message about OS compatibility while invoking virtuoso

$
0
0

Hey,

I am facing some warning message unexpectedly while I was invoking virtuoso.

When I searched about this warning in the forum, it was saying about OS compatibility issue. I am using compatible OS only which is RHEL 6.7.
In one solution, there was a solution mentioning to change the environment saying "setenv W3264_NO_HOST_CHECK  1"

I don't know where to set this and how to?

If it is relevant to this, somebody looks at the error and provide the assistance.

I am copying the warning

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

[Sudershana@sudershana cadence]$ virtuoso
WARNING: HOST <sudershana> DOES NOT APPEAR TO BE A CADENCE SUPPORTED LINUX CONFIGURATION.
         For More Info,  Please Run '<cdsroot>/tools.lnx86/bin/

checkSysConf' <productId>.

sh: /home/Sudershana/cadence_tools/IC616/IC616ISR11_lnx86/tools/bin/cdsDaemonStarter: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
(null)
sh: /home/Sudershana/cadence_tools/IC616/IC616ISR11_lnx86/tools/bin/cdsDaemonStarter: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
/home/Sudershana/cadence_tools/IC616/IC616ISR11_lnx86/tools/bin/cdsServIpc[80]: .[1121]: exec: /home/Sudershana/cadence_tools/IC616/IC616ISR11_lnx86/tools/bin/32bit/cdsServIpc: not found
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

When to Use TopMetal2

$
0
0

Hi,

I am using a new process that contains both TopMetal1 and TopMetal2. Unfortunately documentation is not very useful on when to use either one. Wondered if anyone had any advice on the following:

1. When to use TopMetal2
2. Which is better for Bonding

Thanks.

Modifying a string passed through pPar()

$
0
0

I've got a couple of s-parameter files that I want to make symbols for so I can easily use them in my schematics. For that, I made a symbol (let's call it sparblock), and a schematic view that contains an nport from analogLib. On the properties of that nport I set the value for the data file to be pPar("filename").

If I now instantiate an sparblock in my schematic I can set the "filename" property to, say, "/data/models/spar/model1.sp" and everything works.

However, I'd like to make it a bit more user-friendly by not requiring the user to fill in the whole path, so I want to add the path in front of the filename. I changed the property of the nport to be

strcat("/data/models/spar/" pPar("filename"))

And then only have "model1.sp" on the sparblock property. However, Spectre now tells me

ERROR (SFE-874): "netlist" 7: Unexpected operator "/". Expected end of file or end of line.

So apparently it doesn't know how to interpret the strcat() expression. Is there a way to concatenate two strings on the property form like this?


problem when launching virtuoso IC 6.1.5 on rhel 6.8

$
0
0

Hello I get the following errors when trying to launch virtuoso on rhel 6. thanks

awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
sort: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
/bin/ksh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory

Process Design Kit (PDK) Development for particular technology

$
0
0

Hello,


I have recently started to develop PDK for our own technology, It is currently in research phase and we do not have much information about technology parameters. My task is to develop PDK. I know there is a FreePDK available that I could use as a base PDK. But, I am planning to start everything from scratch (because it is not CMOS technology). I have already written the basic technology file (*.tf) using DEFT and also the display.drf. Now I am moving towards pCell development. I have some experience with CAD tools and programming (C,perl, SKILL). My question is how hard would it be to make a develop whole PDK flow (Schematic, layout, simulation, DRC, LVS, extraction) for our own technology.

Secondly, I have heard about this Open-Acess PDK's but haven't worked with them. Should I focus open-access based PDK development ?.  After developing whole PDK would it be difficult to convert it to open-access based PDK?.  Any good guides related to Open-Access PDK development

Thanks

ADE-L generates .grf files with non-existing expression definitions

$
0
0

Hi! I'm having an annoying issue with some states in ADE-L. For some reason, some old expression definitions are being held somehow somewhere (even if they don't exist at all in the outputs list), and when I save any waveform files (.grf) these definitions are included on them, causing lots of warning to appear each time I load these .grf files.

For instance I get the following warnings on the CIW when loading a .grf file:

*WARNING* Symbol(s) named " 'S01__vRESdiff' " used in the definition of dependent expression
                     Name: 'S01__vRESdiff__sampled__at_100pc_Tamp'
               Expression: 'sample(S01__vRESdiff VAR("MEAS__TRAN__Tstart__at_100pc_Tamp") VAR("MEAS__TRAN__Tstop__at_100pc_Tamp") "linear" VAR("MEAS__TRAN__Tsample"))'
 have not been defined as expressions. This may result in evaluation errors or ambiguous values for the dependent expression.
 Either add these symbol(s) as expression(s) in the Outputs or remove them from the definition of the dependent expression.

*WARNING* Symbol(s) named " 'TRAN___Iavg__PIPELINE__vddA', 'TRAN___Iavg__PIPELINE__vddCMP', 'TRAN___Iavg__PIPELINE__vddD', 'TRAN___Iavg__PIPELINE__vddSW' " used in the definition of dependent expression
                     Name: 'TRAN___Iavg__PIPELINE__total'
               Expression: '(TRAN___Iavg__PIPELINE__vddA + TRAN___Iavg__PIPELINE__vddCMP + TRAN___Iavg__PIPELINE__vddD + TRAN___Iavg__PIPELINE__vddSW)'
 have not been defined as expressions. This may result in evaluation errors or ambiguous values for the dependent expression.
 Either add these symbol(s) as expression(s) in the Outputs or remove them from the definition of the dependent expression.

and so on. On the header of the .grf file I do find the following definitions, which I don't understand where they come from!:

<?xml version="1.0" encoding="UTF-8" ?>
<!--StateFileType saveLoadState-->
[...]

    </IndexedProp>
    <IndexedProp Name="dependentExprsList">
        <SimpleProp Name="E0" Value='dB20(mag(dft(vtime(&apos;tran &quot;/SDSC1/Qout&quot;) 20*VAR(&quot;Ts&quot;) VAR(&quot;Ts&quot;)*(20+VAR(&quot;fft_order&quot;)) VAR(&quot;fft_order&quot;) &quot;Rectangular&quot; 1 &quot;default&quot; )))' Type="stringValue" />
        <SimpleProp Name="E1" Value='dB20(mag(dft(vtime(&apos;tran &quot;/SDSC1/Qout&quot;) 20*VAR(&quot;Ts&quot;) VAR(&quot;Ts&quot;)*(20+VAR(&quot;fft_order&quot;)) VAR(&quot;fft_order&quot;) &quot;Rectangular&quot; 1 &quot;default&quot; )))' Type="stringValue" />
        <SimpleProp Name="E2" Value='getData(&quot;/DUT/PIPELINE/BACKEND_PIPELINE/STAGE05/subADC/H__subADC/PHIquantizeN_local&quot; ?result &apos;tran)' Type="stringValue" />
        <SimpleProp Name="E3" Value='getData(&quot;/DUT/PIPELINE/BACKEND_PIPELINE/STAGE05/subADC/H__subADC/PHIsampleE_local&quot; ?result &apos;tran)' Type="stringValue" />
        <SimpleProp Name="TRAN__CMFBamp__S1__MN__region" Value='getData(&quot;DUT.RESGEN.CMFBamp.S1__MN:region&quot; ?result &quot;tran&quot;)' Type="stringValue" />
        <SimpleProp Name="TRAN__CMFBamp__S2__MN__region" Value='getData(&quot;DUT.RESGEN.CMFBamp.S2__MN__L:region&quot; ?result &quot;tran&quot;)' Type="stringValue" />
        <SimpleProp Name="S1__sADC__H__vCshared_p" Value='(VT(&quot;/S01__subADC__H__vSHAREDp&quot;) - VT(&quot;/S01__subADC__H__vINp_COMP&quot;))' Type="stringValue" />
        <SimpleProp Name="S01__vRESdiff__sampled__at_100pc_Tamp" Value='sample(S01__vRESdiff VAR(&quot;MEAS__TRAN__Tstart__at_100pc_Tamp&quot;) VAR(&quot;MEAS__TRAN__Tstop__at_100pc_Tamp&quot;) &quot;linear&quot; VAR(&quot;MEAS__TRAN__Tsample&quot;))' Type="stringValue" />
        <SimpleProp Name="E4" Value='getData(&quot;/PIPELINE/S01__vREFcm_sample&quot; ?result &apos;tran)' Type="stringValue" />
        <SimpleProp Name="TRAN___Iavg__PIPELINE__total" Value="(TRAN___Iavg__PIPELINE__vddA + TRAN___Iavg__PIPELINE__vddCMP + TRAN___Iavg__PIPELINE__vddD + TRAN___Iavg__PIPELINE__vddSW)" Type="stringValue" />
        <SimpleProp Name="TRAN__Iavg__S01__CMFBAMP__S1" Value='average(IT(&quot;/S01/CORE/MDAC/RINGAMPcmfb/AMP/S1__MP/S&quot;))' Type="stringValue" />
    </IndexedProp>
    [...]

None of the above expressions exist anymore in my ADE state. If I delete manually everything between <IndexedProp> ... </IndexedProp> and reload the .grf, I still get warnings for expressions which don't exist neither in the ADE-L outputs list nor in the .grf file:

*WARNING* Symbol(s) named " 'S01__vRESdiff' " used in the definition of dependent expression
                     Name: 'S01__vRESdiff__sampled__at_100pc_Tamp'
               Expression: 'sample(S01__vRESdiff VAR("MEAS__TRAN__Tstart__at_100pc_Tamp") VAR("MEAS__TRAN__Tstop__at_100pc_Tamp") "linear" VAR("MEAS__TRAN__Tsample"))'
 have not been defined as expressions. This may result in evaluation errors or ambiguous values for the dependent expression.
 Either add these symbol(s) as expression(s) in the Outputs or remove them from the definition of the dependent expression.

*WARNING* Symbol(s) named " 'TRAN___Iavg__PIPELINE__vddA', 'TRAN___Iavg__PIPELINE__vddCMP', 'TRAN___Iavg__PIPELINE__vddD', 'TRAN___Iavg__PIPELINE__vddSW' " used in the definition of dependent expression
                     Name: 'TRAN___Iavg__PIPELINE__total'
               Expression: '(TRAN___Iavg__PIPELINE__vddA + TRAN___Iavg__PIPELINE__vddCMP + TRAN___Iavg__PIPELINE__vddD + TRAN___Iavg__PIPELINE__vddSW)'
 have not been defined as expressions. This may result in evaluation errors or ambiguous values for the dependent expression.
 Either add these symbol(s) as expression(s) in the Outputs or remove them from the definition of the dependent expression.

So my question is: where are these definitions coming from and how can I get rid of them once and for all?

Thanks in advance for any help!

Cheers,

Jorge.

P.S. I've tried searching (on the command line) for files containing the problematic expression names under the cell's hierarchy and couldn't find anything. I suspect these definitions are being held in some sort of cache somewhere!

Changing the FET model parameters dynamically during Transient Simulation

$
0
0

For example, I have some .scs file which has the following some generic model:

section typ
parameters
...
+ mainfet_rdsw = 5000
...
endsection typ

Now in the above model, lets say at some point of time during transient simulation I want to change that mainfet_rdsw to 7000, how can I do this?

I know I can list parameters to be changed in a file and use it as paramset=pset in "additional options" and I can change things like L,W or component values during transient, however; what I am trying to do is a little bit different thing and I wanted to know what should I do in that case?

Noise contribution of an instance

$
0
0

Hello,

Is there a way to get Spectre to output total noise contributed by a certain instance?  The instance may be a sub-circuit, in which case I'd like to know the sum of all contributions from elements inside of that sub-circuit. I understand that there is "noise summary" feature in ADE, but can this be done outside of the ADE, using stand-alone SpectreRF and/or SpectreMDL?

  Thanks!

Use the spectre relay component

$
0
0

Hi,

analogLib has a cell called "switch" which has 5 parameters, open voltage, closed voltage, open switch resistance, close switch resistance and multiplier. the documentation says that the spectre element used is "relay" and spectre -h relay gives more parameters, including hysteresis. Can somebody please tell me how to use these and set these parameters in the symbol available in analogLib? If this is not possible, alternately can somebody please explain how I can define a symbol and specify the spectre element in a model file with all the parameters I want?

Many thanks.

How to draw the bottom level instance layers in the present level

$
0
0

Hi,

I am writing a program to get the overlapping area of the different layers. I wrote for the layers present in the heirarchy level successfully. But the problem is when there is an instance, for example I instanced a pcell in the layout and I drawn a rectangle of M1 over it now I need the overlapping area of M1 and the poly which is present in pcell.

Can any one please help me how to draw the bottom level layers in the present level ? Can we done it using "dbHierPathTransform()" commands

Thanks.


How to measure current probed by isub() command using spectre xps ?

$
0
0

Hello All,

I am trying to find leakage of different instances/subckts using spectre xps.

I tried using 

chk1  dyn_subcktpwr   inst=[*]        port=[*]        depth=4 time_window=[36n 37n]

It dumped an empty xml file.

Then moved ahead with spice commands as under:

For 

.probe i(vvdd)
.probe i(vvcs).

I am measuring them as under:

.measure tran leak_vdd_1 avg i(vvdd) from = start_time to = end_time
.measure tran leak_vcs_1 avg i(vvcs) from = start_time to = end_time

But how to measure current for below probe which used isub

.probe isub(SEGIOX2.VDD)
.probe isub(SEGIOX2.SEGIO0.VDD)
.probe isub(SEGIOX2.REBUF.VDD)

I tried following ways which did not work.

1) .print isub(SEGIOX2.VDD)

2) .measure tran leak_vdd_2 avg i(SEGIOX2.VDD) from = start_time to = end_time

So any help on how to dump current probed by isub ?

Thanks,

Roopak

linear fit of simulation results

$
0
0
In ADE I extract some parameters from a waveform (time elapsed from rising to falling edge on some kind of TOT) on a parametric simulation. I plot the result but I would like to get a linear fit of this curve plus residuals. I can't find a way to do that with in the calc. Can you please tell me if that fonction exists. Thank you very much Olivier

Temperature Evaluation

$
0
0

Hello friends from Cadence,

We have schematic and layout views.
We want to evaluate the temperature propagation in different parts from chip (in layout and/or schematic level).
Could you inform us the aplications used to create temperature maps and their doc-manual names?


Thanks,
Rafael

Referencing a model, not a model instance

$
0
0

Hello,

I found the post about disabling flicker noise with alter in this forum and I got it working:

turnOffFlicker1 alter mod=N15.xmmaster.lvtnfetacc param=nfalw value=0
turnOffFlicker2 alter mod=N15.xmmaster.lvtnfetacc param=nfblw value=0
turnOffFlicker3 alter mod=N15.xmmaster.lvtnfetacc param=nfclw value=0

If I reference the model (i.e. lvtnfetacc and masterlvtnfet from the model files) I get:

ERROR (SFE-1997): "disable_flicker.scs" 6: turnOffFlicker4: parameter `mod': Invalid model name `lvtnfetacc' was given as value of parameter `mod'.

I tried all possible variations. Unfortunately the model files are so nested that I don't know what's going on. Generally there is a subckt for "lvtnfet" which instantiates instance xmmaster of lvtnfetacc. lvtnfetacc itself is a subckt which instantiates m1. m1 is a reference to the model lvtnfetacc of type utsoi which has the parameter nfalw etc:

sub

Please help me to set nfalw to zero globally without listing all instances.

Also, is it possible to list multiple mod/param/value pairs at once so that I do not need to create thousands of turnOffFlickerXX lines that go up to 1000?

Thank you!

Nonlinearity Separation

$
0
0

This is with 95% a question without solution but I still try it .. maybe there is something out there.

For noise the different sources are visible in the results browser and noise summary so I can identify the devices/sources which kill noise performance.

I would be looking for something similar for linearity (e.g. IIP3, HD3, IM3, ...).

The issue: A simple differential pair (PMOS with NMOS loads or reverse).

The IIP3 versus VGS, VDS, GM/ID etc looks arbitrary and I have no control what is limiting linearity.

I can get a relatively accurate expression for IIP3 for drain current linearity but this is 30-40 dB (!!) better than what I get. So I assume I am limited by ids/vds linearity. But is it the gm transistor or the load? And what know to dial to get a handle on this?

Some sort of "nonlinearity" separation could confirm that I may neglect the common ids/vgs nonlinearity and just plot IIP3 vs. VDS of a single transistor.

Viewing all 4907 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>