Difference between revisions of "Constant expression replacement"

From Verific Design Automation FAQ
Jump to: navigation, search
(Created page with "'''Q: Does Verific replace constant expressions with their respective values?''' I have in my Verilog code: parameter size = 8; reg [size-1:0] foo; I expect the range...")
 
 
(3 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
I expect the range of "foo" to be [7:0]. How do I get the range [7:0]?
 
I expect the range of "foo" to be [7:0]. How do I get the range [7:0]?
  
If run-time flag "veri_replace_const_exprs" is set, Verific will replace constant expressions with their respective values in static elaboration.
+
If run-time flag "veri_replace_const_exprs" is set, during static elaboration, Verific will replace the following constant expressions with their respective values:
 +
# Bounds of packed and unpacked ranges in all data declarations.
 +
# Default values of all declared objects if those are constant.
 +
# Delay values.
 +
# Reject and error limits of VeriPathPulse values.
 +
# Indexed expressions only if the indexed expression is a bit-select on the LHS of a continuous assignment or output/inout port of module or gate instantiation.
 +
 
 +
Above specific replacements are not done on un-elaborated modules because the parameter values they depend on might be changed later by other applications.
  
 
In C++:
 
In C++:
  RuntimeFlags::SetVar(" veri_replace_const_exprs", 1) ;
+
  RuntimeFlags::SetVar("veri_replace_const_exprs", 1) ;
  
 
In Tcl:
 
In Tcl:
 
  set_runtime_flag "veri_replace_const_exprs" 1
 
  set_runtime_flag "veri_replace_const_exprs" 1

Latest revision as of 08:51, 17 November 2023

Q: Does Verific replace constant expressions with their respective values?

I have in my Verilog code:

   parameter size = 8;
   reg [size-1:0] foo;

I expect the range of "foo" to be [7:0]. How do I get the range [7:0]?

If run-time flag "veri_replace_const_exprs" is set, during static elaboration, Verific will replace the following constant expressions with their respective values:

  1. Bounds of packed and unpacked ranges in all data declarations.
  2. Default values of all declared objects if those are constant.
  3. Delay values.
  4. Reject and error limits of VeriPathPulse values.
  5. Indexed expressions only if the indexed expression is a bit-select on the LHS of a continuous assignment or output/inout port of module or gate instantiation.

Above specific replacements are not done on un-elaborated modules because the parameter values they depend on might be changed later by other applications.

In C++:

RuntimeFlags::SetVar("veri_replace_const_exprs", 1) ;

In Tcl:

set_runtime_flag "veri_replace_const_exprs" 1