• 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. Functional Verification
  3. Problem when running simulation with Verilog-AMS and SystemVerilog...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 65
  • Views 19903
  • 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

Problem when running simulation with Verilog-AMS and SystemVerilog together with irun

solomonchoi
solomonchoi over 11 years ago

 Hi,

 I am now working on a AMS verification using irun. I have an analog module (Verilog-AMS model, .vams) and a logic module (SystemVerilog RTL netlist, .sv) and want to integrate them together for system verification, especially on the control of the analog module by the logic one. The testbench I am using is in .vams format. When I compiled it with irun, it gave the following error message and I don't know how to fix it. May I know if you have an idea on this issue? Thanks a lot in advance.

 ncvlog: *E,WOUPSR (/rtl/sv/dtcm_dsc_enc_ich.sv,293|27): A reference to an entire array is not permitted in this context [SystemVerilog].
(`include file: /rtl/sv/dtcm_dsc_enc_ich.sv line 372, file: all.sv line 121)
        history[i] = history_m[i];

Best Regards,

Solomon

  • Cancel
  • StephenH
    StephenH over 11 years ago

     

    solomonchoi said:

     Hi,

     I am now working on a AMS verification using irun. I have an analog module (Verilog-AMS model, .vams) and a logic module (SystemVerilog RTL netlist, .sv) and want to integrate them together for system verification, especially on the control of the analog module by the logic one. The testbench I am using is in .vams format. When I compiled it with irun, it gave the following error message and I don't know how to fix it. May I know if you have an idea on this issue? Thanks a lot in advance.

     ncvlog: *E,WOUPSR (/rtl/sv/dtcm_dsc_enc_ich.sv,293|27): A reference to an entire array is not permitted in this context [SystemVerilog].
    (`include file: /rtl/sv/dtcm_dsc_enc_ich.sv line 372, file: all.sv line 121)
            history[i] = history_m[i];

    Best Regards,

    Solomon

     

    The extended help for that error gives slightly more information to help you. Otherwise without seeing your code it's not rteally possible to answer that question.

     

     % nchelp ncelab WOUPSR
    nchelp: 13.20-s010: (c) Copyright 1995-2014 Cadence Design Systems, Inc.
    ncelab/WOUPSR =
            This particular context does not permit a reference to a whole
            unpacked array, unpacked struct or union.
            We currently do not support multi dimensional fixed wire arrays on port connections.

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • solomonchoi
    solomonchoi over 11 years ago

    Hi Stephen,

    This is part of our code on the instantiation and the module definition relating to the error. Actually, I found that unpacked wire array ports are said to be prohibited to be connected to VHDL or Verilog AMS in Cadence's SystemVerilog Reference. Does it mean that this is not supported? Thanks for your help!

     

    wire [26:0] history_m [31:0];

    dsc_enc_ich_mux  dsc_enc_ich_mux (
        .clk          (clk),
        .rst_b        (rst_b),
        .sync_rst     (sync_rst),

        .idx0         (ich_idx_d1[0]),
        .idx1         (ich_idx_d1[1]),
        .idx2         (ich_idx_d1[2]),
       
        .histbuf      (histbuf),

        .history      (history_m)
    ); 

    module dsc_enc_ich_mux #(
    ) (
        input        clk,
        input        rst_b,
        input        sync_rst,

        input  [4:0] idx0,
        input  [4:0] idx1,
        input  [4:0] idx2,
       
        input [26:0] histbuf [31:0],

        output reg [26:0] history [31:0]
    );
     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • StephenH
    StephenH over 11 years ago

    There are no industry-standard specifications for the way the different languages connect together, e.g. VHDL to Verilog or AMS, so if the docs say it's prohibited it would generally mean it's something that's limited by the tool implementation instead of by a standard.

    In your specific case I have a suspicion that the problem comes from your declaration of  "output reg [26:0] history [31:0]". If possible, try changing this to a wire declaration like "output wire [26:0] history [31:0]", then use a continuous assignment from a new internal reg signal onto the wire port. I can't promise that will fix your issue, but it does look like a limitation that another customer showed me this week, and which I'm still investigating.

    Alternatively change the unpacked declaration to a packed one: "output reg [26:0][31:0] history".

    If you do try this, please share the result here for others to benefit.

    • 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