-
Notifications
You must be signed in to change notification settings - Fork 805
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix questa hjson file with needed options #25764
base: master
Are you sure you want to change the base?
Changes from all commits
216128d
09d7154
94f97ae
fc9f2ba
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,26 +2,56 @@ | |
// Licensed under the Apache License, Version 2.0, see LICENSE for details. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
{ | ||
build_cmd: "{job_prefix} {QUESTA_HOME}/questasim/linux_x86_64/qrun -optimize" | ||
run_cmd: "{job_prefix} {QUESTA_HOME}/questasim/linux_x86_64/qrun -simulate" | ||
build_cmd: "{job_prefix} {QUESTA_HOME}/linux_x86_64/qrun -optimize" | ||
run_cmd: "{job_prefix} {QUESTA_HOME}/linux_x86_64/qrun -simulate" | ||
|
||
|
||
build_opts: [ "-timescale 1ns/1ps", | ||
"-outdir {build_dir}/qrun.out", | ||
"-uvm -uvmhome {QUESTA_HOME}/questasim/verilog_src/uvm-1.2", | ||
"+incdir+{QUESTA_HOME}/verilog_src/uvm-1.2/src", | ||
"+incdir+{QUESTA_HOME}/verilog_src/uvm-1.2/src/mentor", | ||
"{QUESTA_HOME}/verilog_src/uvm-1.2/src/uvm_pkg.sv", | ||
"-uvm -uvmhome {QUESTA_HOME}/verilog_src/uvm-1.2", | ||
"-mfcu", | ||
"-sv", | ||
"-svext=hierbinsof", | ||
// Questa throws error on some LRM violations & restrictions. We demoted these errors since they will not impact the flow: | ||
//2744: It shall be illegal to have an import statement directory within a class scope. | ||
// [DOC: IEEE Std 1800-2009 Verilog LRM - Section 26.3 "Referencing data in packages"] | ||
//2912: The specified port cannot be connected by name because it does not exist. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is very surprising to me! That would presumably be a bug in the code in question? Can you send examples that are currently failing this? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, please could you provide a list of examples where this doesn't work? (Or alternatively a pattern that will find them with grep?) |
||
//7070: An expression of string type can be assigned directly to a variable of string type. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, this looks rather surprising to me! I assume that |
||
// Values of integral type can be assigned to a string variable, but require a cast. | ||
// [DOC: IEEE Std 1800-2012 Verilog LRM - 6.16 String Data Type] | ||
//7034: The strict rule for unpacked array assignment/comparison requires that the packed elements must match exactly as do the keys for associative arrays. | ||
//7033: In SystemVerilog, a variable assigned inside an always_comb, always_latch, or always_ff may not be assigned by any other process. | ||
//2244: An explicit static keyword shall be required when an initialization value is specified as part of a static variable's declaration to indicate the user's intent of executing that initialization only once at the beginning of simulation. | ||
// The static keyword shall be optional where it would not be legal to declare the variables as automatic. | ||
// [DOC: IEEE Std 1800-2009 Verilog LRM - 6.21 Scope and Lifetime] Variable initialized in its declaration in a static task, function or procedural block requires an explicit static keyword. | ||
//7041: The strict rule for string type assignment requires a cast if a string type is assigned to a packed type or a packed type is assigned to a string type. | ||
// Note that a string literal is not the same as a string type. | ||
"-suppress 2744,2912,7070,7034,7033,2244,7041", | ||
rswarbrick marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"-f {sv_flist}", | ||
// List multiple tops for the simulation. Prepend each top level with `-top`. | ||
"{eval_cmd} echo {sim_tops} | sed -E 's/(\\S+)/-top \\1/g'", | ||
"-voptargs=\"+acc=nr\"" | ||
"-voptargs=\"-access=rw+/. -svext=cbos\"" | ||
] | ||
|
||
run_opts: [ "-outdir {build_dir}/qrun.out", | ||
"-sv_seed {seed}", | ||
// dv_macros.svh has a macro printing null using %0d | ||
// format specifier, Questa throws an error on this | ||
// we demote this error in Questa | ||
"-suppress vsim-8323", | ||
"-c", | ||
"-sv_lib {QUESTA_HOME}/uvm-1.2/linux_x86_64/uvm_dpi", | ||
// Questa throws error on some LRM violations & restrictions. We demoted these errors since they will not impact the flow: | ||
//8323: dv_macros.svh has a macro printing null using %0d format specifier, Questa throws an error on this. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oof, that sounds like a genuine bug in some DV code ("passing a null pointer to something that wants an integer"). Can you give a list of examples of this? I'd love to just fix them! |
||
//7034: The strict rule for unpacked array assignment/comparison requires that the packed elements must match exactly as do the keys for associative arrays. | ||
//7033: In SystemVerilog, a variable assigned inside an always_comb, always_latch, or always_ff may not be assigned by any other process. | ||
//7041: The strict rule for string type assignment requires a cast if a string type is assigned to a packed type or a packed type is assigned to a string type. | ||
// Note that a string literal is not the same as a string type. | ||
//7067: Index out of bounds for unpacked array of packed elements in constraint. | ||
//8111: The path specified is incorrect. | ||
//16133,16132: It is missing +acc/-access in vopt which is necessary for the uvm_reg_pkg backdoor calls to work. | ||
// Using +acc or -access for the target objects in vopt so that they can be found by the | ||
// uvm_reg_pkg::uvm_hdl_read() function for backdoor register access. | ||
"-suppress 8323,7034,7033,7067,8111,16133,16132,7041", | ||
rswarbrick marked this conversation as resolved.
Show resolved
Hide resolved
|
||
// Questa forces all declared virtual interfaces to be allocated, | ||
// even in classes that are not even created at runtime. The switch | ||
// below demotes the associated error thrown. | ||
|
@@ -84,6 +114,10 @@ | |
name: questa_waves | ||
is_sim_mode: 1 | ||
} | ||
{ | ||
name: questa_waves_off | ||
is_sim_mode: 1 | ||
} | ||
// TODO Questa coverage only currently supported in the GUI with no merging | ||
{ | ||
name: questa_cov | ||
|
@@ -98,6 +132,12 @@ | |
build_opts: [] | ||
run_opts: [] | ||
} | ||
{ | ||
name: questa_gui_debug | ||
is_sim_mode: 1 | ||
build_opts: [] | ||
run_opts: [] | ||
} | ||
{ | ||
name: questa_xprop | ||
is_sim_mode: 1 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eek! The waiver looks perfectly sensible, but is it easy for you to generate a list of examples that currently fail? I don't have a Questa licence, but I'd be very happy to tidy this up...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm working (very slowly) through this list of waivers. I think the first one will be something we can remove once #26002 is merged. (If not, thank you for testing! Please tell me what I've missed!)