• 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. irun with illegal localparam in list of parameters [12.2...

Stats

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

irun with illegal localparam in list of parameters [12.2(IEEE-2001)].

Ncsim User 1
Ncsim User 1 over 6 years ago

Hi Cadence,

I use irun(64): 15.20-s029 to run some SV files I fetched from the internet.

I am getting this error but it seems those are correct syntax in Verilog 2001 and later.

How do I fix those?

Thank you!

file: ../tb/tnoc/rtl/bcm/tbcm_counter.sv
  localparam  int WIDTH         = $clog2(MAX_COUNT + 1)
           |
ncvlog: *E,LOCALP (../tb/tnoc/rtl/bcm/tbcm_counter.sv,6|11): illegal localparam in list of parameters [12.2(IEEE-2001)].
 module gncorelib.tbcm_counter:sv
  errors: 1, warnings: 0

module tbcm_counter #(
  parameter   int MAX_COUNT     = 3,
  parameter   int MIN_COUNT     = 0,
  parameter   int INITIAL_COUNT = MIN_COUNT,
  parameter   bit WRAP_AROUND   = 1,
  localparam  int WIDTH         = $clog2(MAX_COUNT + 1)
)(
  input   logic             clk,
  input   logic             rst_n,
  input   logic             i_clear,
  input   logic             i_set,
  input   logic [WIDTH-1:0] i_set_value,
  input   logic             i_up,
  input   logic             i_down,
  output  logic [WIDTH-1:0] o_count,
  output  logic [WIDTH-1:0] o_count_next
);
  localparam  bit [WIDTH-1:0] INITIAL = INITIAL_COUNT;
  localparam  bit [WIDTH-1:0] MAX     = MAX_COUNT;
  localparam  bit [WIDTH-1:0] MIN     = MIN_COUNT;

  logic [WIDTH-1:0] count;
  logic [WIDTH-1:0] count_next;

  • Cancel
Parents
  • StephenH
    StephenH over 6 years ago

    It is legal code, but unfortunately this was not supported in Incisive; you could only have localparam declarations in the module body, not the parameter port list in Incisive.

    If you can switch to using Xcelium then you won't have any problem with this code; Xcelium supports declaring localparm in the parameter port list.

    Bear in mind that Incisive stopped being developed (no new features) since 2016!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Ncsim User 1
    Ncsim User 1 over 6 years ago in reply to StephenH

    Thank you StephenH for the response.

    I think I am outdated on these tools. Is Xcelium going to replace irun/ncsim?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • StephenH
    StephenH over 6 years ago in reply to Ncsim User 1

    Yes, Incisive reached the end of its life in 2016 when Xcelium was born. We do still issue bug fixes for Incisive, but we don't put new features in. Eventually Cadence will stop issuing bug fixes for Incisive, but that's not happening immediately due to some customers who are locked onto Incisive for long-term projects (mainly due to functional safety tool version requirements).

    Xcelium is based off the Incisive code base, with the addition of the RocketSim multi-core engine and has many new features compared to Incisive. For most users it's a seamless swap, Xcelium even accepts the old irun / nc* commands for backwards compatibility (though it prefers you to use xrun). The only caveat is that you need to get your Incisive licences converted to Xcelium ones, but again that should be a simple process and has the benefit that some things that used to be add-on licences in Incisive become standard in Xcelium, so you get more for your money Slight smile

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • StephenH
    StephenH over 6 years ago in reply to Ncsim User 1

    Yes, Incisive reached the end of its life in 2016 when Xcelium was born. We do still issue bug fixes for Incisive, but we don't put new features in. Eventually Cadence will stop issuing bug fixes for Incisive, but that's not happening immediately due to some customers who are locked onto Incisive for long-term projects (mainly due to functional safety tool version requirements).

    Xcelium is based off the Incisive code base, with the addition of the RocketSim multi-core engine and has many new features compared to Incisive. For most users it's a seamless swap, Xcelium even accepts the old irun / nc* commands for backwards compatibility (though it prefers you to use xrun). The only caveat is that you need to get your Incisive licences converted to Xcelium ones, but again that should be a simple process and has the benefit that some things that used to be add-on licences in Incisive become standard in Xcelium, so you get more for your money Slight smile

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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