• 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. RF Design
  3. Verilog-A: Lookup tables for AC analysis

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 63
  • Views 16172
  • 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

Verilog-A: Lookup tables for AC analysis

Julian000
Julian000 over 7 years ago

Hello everyone, 

I have a problem performing AC analysis on lookup tables based components.

Basically, on the basis of Pown M. question,  I wanted to extend the validity of that code to AC analysis as well. By reducing the problem to its core, I created a simple voltage dependent differential capacitance and I found out that it does not work properly. I should better say that the error seems to be proportional to the variation of the capacitance (defined in the lookup table) with respect to the polarization point. 

Below I attach the code of a simple nonlinear capacitor described by a lookup table, which gives the capacitor value according to a specific polarization point. 

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

module cap_LT(c1,c2);

inout c1,c2;
electrical c1,c2;
real c;
(* desc = "charge" *) real q;

analog begin

c=$table_model( (V(c1,c2)), "vc_C.txt","1LL");

q = c*(V(c1,c2));
I(c1,c2) <+ ddt(q);

end
endmodule

The lookup table has been generated at a fixed frequency and changing the voltage across the capacitor. Hence, the simulation I am performing is an AC analysis at a fixed frequency while the sweep is made on a design variable which correspond to the DC bias of the component. Additionally I have put a very small AC stimulus.

As stated above, the simulation runs without issues but the capacitance I extract from the results is not the same as the one defined by the lookup table. Indeed, the more its changes along the polarization, the more the error increases (the maximum error is more or less twice the capacitance values it should have).

I think it is related to the time derivative ddt but still I can't find any workaround. As far as I know, the simulator performs at each sweep point a DC analysis in order the respective small signal circuit. Hence, even doing single polarization analysis the result does not change.

can somebody help me please? 

many thanks in advance.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    I think I know what's going on - essentially it's computing the derivative to determine the small-signal response of a voltage or current generated with a table; that would be reasonable if it was a voltage or current being looked up, but not if it's a capacitance.

    I filed CCR 1823411 for this to see what R&D have to say about it. You might want to contact customer support so that a duplicate can be filed for you in order to track it since I don't know which customer you're from.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Julian000
    Julian000 over 7 years ago
    Thank you Andrew Beckett for the reply. I think I have figured out what was the problem.
    In practice, the derivation was made recursively to the capacitance and not just to the voltage. I had assumed that once the bias point was found the value of c was kept fixed according to the table. However, seems like it still considers c as variable and try to compute the derivative of it, thus adding that error i was experiencing.

    I have solved the problem by just doing the ddt before the multiplication with the looked up capacitance c.

    with best regards,

    Julian.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Julian,

    Thanks - both R&D and I had come to the same conclusion too. I have suggested that we document this behaviour to make it clearer what happens when you use ddt() on an expression including something looked up from a table.

    Regards,

    Andrew.

    • 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