• 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. How to netlist a VHDL-AMS generic of type "time" correctly...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 126
  • Views 1948
  • 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

How to netlist a VHDL-AMS generic of type "time" correctly in ADE?

Eckhard Hennig
Eckhard Hennig over 6 years ago

Hi,

while trying to transfer a working mixed-signal system model from Mentor Graphics SystemVision to Cadence Virtuoso/AMSDesigner I came across the following problem.

Some of the VHDL-AMS components in my system model include generic parameters of type "time", for example:

entity comparator_d is
  generic (
    delay : time := 1.0 us; 
    hysteresis : voltage := 0.0
  );
    
  port (
    terminal in_pos : electrical;
    terminal in_neg : electrical;
    signal output : out std_logic := '1' 
  );
end comparator_d;

I let Virtuoso (v6.1.8) create a schematic symbol from this code, then I instantiated the symbol on a new schematic with all generics left at their default values. When I netlist the design in ADE with the simulator set to "ams", the following netlist entry is created:

comparator_d #(.delay("1.0 us")) I10 (.\output ( net1 ), .in_pos( net2 ), .in_neg( net3 ));

The time value 1.0 us is passed as a string, which is not recognized as a valid time specification by the simulator.

Warning from spectre in
        `classd_models__shell_model__schematic__0x10000001':`shell_model',
        during hierarchy flattening.
    WARNING (SFE-30):
        "/home/hennig/sim/classd/shell_model/ams/config/netlist/netlist.vams"
        28: shell_model.I10: `DELAY' is not a valid parameter for an instance
        of `CLASSD_MODELS__comparator_d__behavioral__0x10000001'.  Ignored.

If I change the CDF parameters of the delay property so that the value is parsed as a number, I can change the netlist entry into something like this, ....

comparator_d #(.delay(1.0e-6)) I10 (.\output ( net1 ), .in_pos( net2 ), .in_neg( net3 ));

..., but then the simulator complains about a type mismatch.

Do you have any suggestions how to pass generics of type "time" correctly through a Verilog netlist to a VHDL-AMS component?

Thanks,

Eckhard

  • Cancel
  • RolandSYBA
    RolandSYBA over 4 years ago

    Hello,

    I just have same problem with generics of  type time in vhdl.
    Seems this question has not yet been answered... could anyone help?


    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to RolandSYBA

    I just tried this, in IC6.1.8-64b.500.19 (ISR19) with XCELIUM2009 (20.09-s014) (so current versions of each), and with a value on the instance of 2.0 us it gets netlisted (using UNL, which is the only option nowadays), this gets netlisted as:

    `include "disciplines.vams"
    `include "userDisciplines.vams"
    // HDL file - mylib, comparator_d, ideal.
    // Library - mylib, Cell - comparatorTB, View - schematic
    // LAST TIME SAVED: Jul 25 16:59:05 2021
    // NETLIST TIME: Jul 25 17:00:19 2021

    `worklib mylib
    `view schematic

    `timescale 1ns / 1ns
    (* cds_ams_schematic *)

    module comparatorTB ( );
    wire y;
    wire a;
    comparator_d #(.delay(2000)) I0 (.in_neg(cds_globals.\gnd! ), .in_pos( a ), .\output ( y ));
    vsource #(.type("sine"), .freq(1000000), .ampl(1)) V0 (a, cds_globals.\gnd! );

    endmodule

    As you can see, the delay gets netlisted as 2000 (an integer in timescale units). This seems to work fine... I added an assert in my architecture (based on the example above):

    assert 1>2
    report "delay is " & time'image(delay)
    severity note;

    and it prints:

    delay is 2 us

    so clearly it's working.

    What versions are you using? As far as I can see this has not been fixed recently... so I'm surprised it would be broken. Maybe the CDF is incorrect for the parameter?

    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