Quantcast
Viewing all 4938 articles
Browse latest View live

Is there a simple way of converting a schematic to an s-parameter model?

Before I ask this, I am aware that I can output an s-parameter file from an SP analysis.

I'm wondering if there is a simple way of creating an s-parameter model of a component.

As an example, if I have an S-parameter model that has 200 ports and 150 of those ports are to be connected to passive components and the remaining 50 ports are to be connected to active components, I can simplify the model by connecting the 150 passive components, running an SP analysis, and generating a 50 port S-parameter file.

The problem is that this is cumbersome. You've got to wire up 50 PORT components and then after generating the s50p file, create a new cellview with an nport component and connect the 50 ports with 50 new pins.

Wiring up all of those port components takes quite a lot of time to do, especially as the "choosing analyses" form adds arrays in reverse (e.g. if you click on an array of PORT components called X<0:2> it will add X<2>, X<1>, X<0> instead of in ascending order) so you have to add all of them to the analyses form manually.

Is any way of taking a schematic and running some magic "generate S-Parameter cellview from schematic cellview"  function that automates the whole process?

Image may be NSFW.
Clik here to view.

ncsim: *E,FLTIGF: [FLT] Failed to inject fault at NET

Hi,

I'm doing fault injection with ncsim and got stuck at the following message: "ncsim: *E,FLTIGF: [FLT] Failed to inject fault at circuit_tb.U0.n2174." I already tried with other NETs, with SET, SA0, SA1, always the same error occurs.


$nchelp ncsim FLTIGF
$ncsim/FLTIGF =
    Injection time is not within the expected finish
    time for the specified fault node. Failed to inject fault.

As can be seen bellow, the injection time is at 2ns and the -fault_good_run -fault_tw 1ns:100ns, so in teory 2ns is inside the window 1ns:100ns.


My scripts so far, considering I already compiled the Verilog testbench and also the gates from the technology library (gate-level simulation):

#this runs ok

ncelab -work worklib -cdslib circuit/trunk/backend/synthesis/work/cds.lib -logfile ncelab.log -errormax 15 -access +wc -status -timescale 1ps/1ps worklib.circuit_tb -fault_file circuit/trunk/backend/synthesis/scripts/fi.list

#this runs ok
ncsim -fault_good_run -fault_tw 1ns:100ns -fault_work fault_db -fault_overwrite worklib.circuit_tb:module -input ../scripts/fs_strobe.tcl -exit

#this runs NOT OK
ncsim -fault_sim_run -fault_work fault_db worklib.circuit_tb:module -input ../scripts/injection.tcl -exit

After the above command I get: "ncsim: *E,FLTIGF: [FLT] Failed to inject fault at circuit_tb.U0.n2174."


Here are the files called from the commands above.

fi.list:

fault_target circuit_tb.U0.n2174 -type SET+SA1+SA0


fs_strobe.tcl:

fs_strobe circuit_tb.WRITE_OUT circuit_tb.PC_OUT[0]


injection.tcl:

fault -stop_severity 3 -inject -time 2ns -type sa1 circuit_tb.U0.n2174


I already checked the NETs with simvision, so their paths are correct.

I'm using as reference the following document: "Functional Safety Simulation - Product Version 15.2 - April 2016"


Any ideas are welcome.

Thank you in advance.

Image may be NSFW.
Clik here to view.

Stability analysis Phase margin and loop gain

Hi,

I am designing a resistive feedback TIA which needs a capacitor in its feedback loop for stability.

I would like to know the effect of a feedback capacitor on the phase margin to determine the optimal capacitance value.

My plan is to add it to the results after the stb analysis by using the direct plot>main form > phase margin (add to outputs).However it not getting added to my results list.

What could be a problem? Is there a way to add phase margin to the results using the calculator? 

I also find that the gain from the stability analysis(the closed loop gain) is different from that of the gain obtained for the closed loop simulation in AC analysis. Why is the difference, how is it computed in stability analysis?

Image may be NSFW.
Clik here to view.

Thanks,

-Rakesh.

Image may be NSFW.
Clik here to view.

Choosing XF Magnitude of supply when measuring supply noise

I have read many pages on using pxf to measure supply noise, and I know to divide the output by the slope of the crossing point get the jitter transfer function

My question is, if the output of a pxf simulation is a voltage-to-voltage transfer function, does it even matter what XF magnitude of the voltage supply source is chosen in the simulation?

In the end, it seems that once the second/voltage transfer function is calculated, you just multiply by the expected amplitude on the supply noise, and it doesn't matter what was chosen as XF magnitude

Image may be NSFW.
Clik here to view.

Explanation for sampled PXF analysis

I am trying to put together for myself why dividing a sampled PXF analysis by the slope of the signal translates into jitter.

I understand the units makes sense ([V/V]/[V/S]=[S/V]), but conceptually, i am trying to make sense of it. 

I want to start with what exactly a sampled PXF simulation does. I understand the difference between PAC and PXF, but what exactly is a sampled PXF trying to do?

The only definition i found is the following: "sampled analysis tells you the transfer function at a specific time-point in the periodic solution". I am looking for some more words

Image may be NSFW.
Clik here to view.

What is the range and type of number that spectre m factor can legally take?

I.e., all natural numbers? Positive real numbers? Can it get negative numbers?

I could not find an answer to that.

When applying to transistors, I'd expect that m can only be a natural number. However, real numbers may have uses when modelling mismatched loads.

Thanks.

Image may be NSFW.
Clik here to view.

VMT

Hello All, 

I am trying to launch virtuoso with the vsdp option in IC 6.1.7-64b.500.23 

I am getting the below error. Can you please advise what is the issue here ?

$ virtuoso -sdp
[1] 76377
-sdp: Command not found.

I see the 95541 & 95543 license options available in the CIW -> OPTIONS -> LICENSES menu

Does this enable me to use the VSDP option and also to generate s-parameters for on-chip components ?

Any detailed replies will be great help. 

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

Global variable sweep in Monte carlo analysis

Hi All, 

I am trying to run MC (Monte carlo ) simulation on a design. 

I am unable to sweep a Global variable in MC simulation unlike corner analysis. 

Can anyone please suggest a way to perform MC simulation along with sweeping global variable ?

Any details will be great help. 

thanks

Image may be NSFW.
Clik here to view.

Assura and Quantus options

Hi All, 

can anyone please let me know what is the difference between running Quantus QRC from Assura menu as compared to the Quantus menu ?

Image may be NSFW.
Clik here to view.

Any details will be great help. 

thanks 

Image may be NSFW.
Clik here to view.

Mark Net in Virtuoso-L

Hi all,
I have troubles using the Mark net tool, maybe you could help out.

In this example for the test I try to highlight a simple net (that does not propagates too much in the layout) called "pwr_i", here in metal 2 (purple).
I do: Connectivity > Mark net, and then press F3, and in the MarkNet Options windows go in Via Layers tab and -for the test- deselect all but (M2) (V2) (M3).


The result is plenty of other unattached signals are highlighted: in this example you can see the "en" signal (horizontal) and even the thick exclude layers (on the left) are highlithed as well...

Image may be NSFW.
Clik here to view.

What do I do wrong ?

Thanks for your help and best regards

Image may be NSFW.
Clik here to view.

rfTlineLib sbend

Hello,

I'm modeling a PCB trace using rfTlineLib components, and wanted to clarify a couple things about "sbend" discontinuity in particular.

1. Documentation for this component in Cadence does not provide any indication re: how the angle is defined.  I found an older ADS sbend model here (https://edadocs.software.keysight.com/pages/viewpage.action?pageId=5906296), which states direction of angle for positive/negative numbers.  Can I assume it's same for the sbend in rfTlineLib?

2. Documentation also indicates that I should be able to specify negative angles, but every time I enter a negative number for the angle in the properties, it defaults immediately to 90deg... is this behavior expected?

Many thanks in advance,

David

Image may be NSFW.
Clik here to view.

Power grid design Innovus

Hi,

   Given the power consumption of a design, how can we go about designing the power grid for the design in Innovus? Is there a method to compute the minimum width for the rings and stripes, via nos, decap, etc?

Which all tools can be used for this?

Thanks and Regards

    Varun M J

Image may be NSFW.
Clik here to view.

Unable to Import .v files with `define using "Cadence Verilog In" tool

Hello,

I am trying to import multiple verilog modules defined in a single file with "`define" directive in the top using Verilog In. The code below is an example of what my file contains.

When I use the settings below to import the modules into a library, it imports it correctly but completely ignores all `define directive; hence when I simulate using any of the modules below the simulator errors out requesting these variables.

Image may be NSFW.
Clik here to view.

My question: Is there a way to make Verilog In consider `define directives in every module cell created? 

Code to be imported by Cadence Verilog In:

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

`timescale 1ns/1ps
`define PROP_DELAY 1.1
`define INVALID_DELAY 1.3

`define PERIOD 1.1
`define WIDTH 1.6
`define SETUP_TIME 2.0
`define HOLD_TIME 0.5
`define RECOVERY_TIME 3.0
`define REMOVAL_TIME 0.5
`define WIDTH_THD 0.0

`celldefine
module MY_FF (QN, VDD, VSS, A, B, CK);


inout VDD, VSS;
output QN;
input A, B, CK;
reg NOTIFIER;
supply1 xSN,xRN;
buf IC (clk, CK);
and IA (n1, A, B);
udp_dff_PWR I0 (n0, n1, clk, xRN, xSN, VDD, VSS, NOTIFIER);
not I2 (QN, n0);

wire ENABLE_B ;
wire ENABLE_A ;
assign ENABLE_B = (B) ? 1'b1:1'b0;
assign ENABLE_A = (A) ? 1'b1:1'b0;

specify
$setuphold(posedge CK &&& (ENABLE_B == 1'b1), posedge A,  `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_B == 1'b1), negedge A, `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_A == 1'b1), posedge B, `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_A == 1'b1), negedge B, `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$width(posedge CK,1.0,0.0,NOTIFIER);
$width(negedge CK,1.0,0.0,NOTIFIER);
if (A==1'b0 && B==1'b0)
(posedge CK => (QN:1'bx)) = (1.0, 1.0);
if (A==1'b1 && B==1'b0)
(posedge CK => (QN:1'bx)) = (1.0, 1.0);
if (B==1'b1)
(posedge CK => (QN:1'bx)) = (1.0,1.0);

endspecify


endmodule // MY_FF
`endcelldefine

`timescale 1ns/1ps
`celldefine
module MY_FF2 (QN, VDD, VSS, A, B, CK);


inout VDD, VSS;
output QN;
input A, B, CK;
reg NOTIFIER;
supply1 xSN,xRN;
buf IC (clk, CK);
and IA (n1, A, B);
udp_dff_PWR I0 (n0, n1, clk, xRN, xSN, VDD, VSS, NOTIFIER);
not I2 (QN, n0);

wire ENABLE_B ;
wire ENABLE_A ;
assign ENABLE_B = (B) ? 1'b1:1'b0;
assign ENABLE_A = (A) ? 1'b1:1'b0;

specify
$setuphold(posedge CK &&& (ENABLE_B == 1'b1), posedge A,  `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_B == 1'b1), negedge A,  `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_A == 1'b1), posedge B,  `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$setuphold(posedge CK &&& (ENABLE_A == 1'b1), negedge B,  `SETUP_TIME, `HOLD_TIME, NOTIFIER);
$width(posedge CK,1.0,0.0,NOTIFIER);
$width(negedge CK,1.0,0.0,NOTIFIER);
if (A==1'b0 && B==1'b0)
(posedge CK => (QN:1'bx)) = (1.0, 1.0);
if (A==1'b1 && B==1'b0)
(posedge CK => (QN:1'bx)) = (1.0, 1.0);
if (B==1'b1)
(posedge CK => (QN:1'bx)) = (1.0,1.0);

endspecify


endmodule // MY_FF2
`endcelldefine

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

I am using the following Cadence versions:

MMSIM Version: 13.1.1.660.isr18

Virtuoso Version: IC6.1.8-64b.500.1

irun Version: 14.10-s039

Spectre Version: 18.1.0.421.isr9

Image may be NSFW.
Clik here to view.

probe tcl command with time_window option

Hi,

I'm running AMS simulation and using probe.tcl file to save the waveform. The size of output file is really big so I need to have an option of only save the waveform during a window of simulation time (i.e. only save waveform from 1us to 2us sim time). 
In Spectre Guide, I found an option for save statement: time_window=[t1 t2] . But I could not find anything similar for tcl probe command option ... 

Thanks. 

Image may be NSFW.
Clik here to view.

DC SWEEP COMPONENT VARIABLE

I have a ring oscillator CMOS that i would like to sweep the values of transistor's width, lets say, from 500n to 10u, and i would like to plot the frequecy of that oscillator x width, opening the calculator and using the function "frequency" of a VT value, but it is not working, i guess because when i use DC sweep, the simulator doesn't calculate the VT value and therefore doesn't calculate the frequency. There is any way of plotting the frequency vs width?
In cadence Virtuoso , Ade L , XL or GXL 

Sorry, i am a begginer 

Image may be NSFW.
Clik here to view.

Is there a setting to let multiple runs of transient noise run in parallel

The version IC6.1.8-64b.500.4

I am running transient noise and I specified 10 runs. From the output log file, I see that the 1st run takes a seed of 1 and the 2nd run takes a seed of 2. What surprises me is that these 10 runs dont in parallel. I dont think that is required.

Is there a setting or workaround to let them run in parallel?

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

Computing logarithm in simulator

I am attempting to convert a voltage to dB in the simulation itself. First thought was to create a verilogA block like this:

`include "constants.vams"
`include "disciplines.vams"

module dB20(vi, vo);

input vi;
output vo;

electrical vi;
electrical vo;

analog begin
V(vo) <+ 20*log(abs(V(vi)));
end
endmodule

This seems to work OK for a transient simulations, but in AC sim the output is totally wrong (should be 0, but is 173700 instead).

Am I doing something wrong here? If this won't work, is there another way of doing this, like a clever arrangement of analogLib components?

Thanks,

Steven

Image may be NSFW.
Clik here to view.

How to convert pnoise to time domain process

The circuit is oscillator, so I am dealing with voltage noise not jitter.

I want to get the time domain representation of the noise but  the transient noise analysis takes ways too long to simulate. Meanwhile, I get pnoise result very fast even though fmin is very low.

I want to ask how to convert pnoise to time domain process without running actual transient noise analysis. Whether doing ifft on the pnoise spectrum gives the time domain process I am looking for.

Image may be NSFW.
Clik here to view.

Cadence License Server Host Id

Hi All, 

can anyone please let me know how can i check Cadence License Server Host Id ?

thanks 

Image may be NSFW.
Clik here to view.

Regarding Monte-Carlo Simulations

Hi,

I have implemented a Common Source amplifier with current load. After simulating gain, now I want to go for Monte-Carlo Simulations for knowing statistical parameters. I have few questions?

1. What is the exact criteria for selecting number of runs of MCS?  For some circuits MCS runs are selected as 100. Why the number of runs of MCS are selected as 100?

2. Is 100 times of MCS enough for predicting the possible performance of the circuit if it is manufactured later?

3. How to make sure number of runs (100 runs of MCS) are necessary for precise prediction?

4. If I simulate some bigger circuit say OTA etc. Shall I need to increase number of MCS runs?

5. Is there any literature (Book) available to support selection of no. of MCS runs for particular circuit?

Looking forward for kind help and suggestions.

Regards!

 

Image may be NSFW.
Clik here to view.
Viewing all 4938 articles
Browse latest View live


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