Professional Documents
Culture Documents
Ncvlog KPNS
Ncvlog KPNS
Ncvlog KPNS
Contents
Cadence NC-Verilog Simulator Known Problems and
Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Product: NC-SIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Product Level 2: DOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
CCR 98155: Makefile.nc does not support .C extension for C++ on IBM . . . . . . 10
Product Level 2: IP_PROTECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
CCR 434611: Block and Generate access not supported with portview type IP author
privilege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
CCR 230561: Internal error when Verilog system function call is called with protected
arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
CCR 84543: ncsim internals with SDI and protected code . . . . . . . . . . . . . . . . . 11
CCR 82101: VHDL attributes may reveal protected information . . . . . . . . . . . . . 11
CCR 80102: $display system task displays protected instances . . . . . . . . . . . . 11
CCR 79122: Report statement inside protected IP may reveal protected information
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Product Level 2: IRUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
CCR 543309: Under irun the SPECMAN_PRE_COMMANDS are only seen by
Specman at simulation time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Product Level 2: NCELAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CCR 263256: Changing the timestamp of a file regenerates intermediate files (ASTs
and VSTs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CCR 182523: Generated configuration files in hierarchical mode with cyclic
dependency fails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CCR 178499: Generation of configuration file fails for multiple library mapping of same
physical library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
CCR 102260: Unable to elaborate large designs on the AIX platform . . . . . . . . . 14
Product Level 2: NCSIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
CCR 562592: IUS with Specman may hang on Linux EE5 when the IUS profiler is on
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
CCR 485610: NCelab binds with wrong module when multiple choices exist . . . 15
CCR 308902: Built-in function IEEE.std_logic_arith does not report error for integer
overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
CCR 228237: Incorrect timing and toggle information in the library backward SAIF file
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
CCR 209971: Contention time and inertial and transport glitch counts are not
supported for SAIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
CCR 58274: EVCD does not dump the initial value information for signals . . . . 16
CCR 57855: Incorrect testbench generated if EVCD is dumped for vector
subelements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
CCR 53180: Some objects are not shown in the waveform viewer during interactive
simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
CCR 43086: Waveform editing through Tcl on signal objects may result in incorrect
output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Product Level 2: NCUPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
CCR 253768: Updates to cds.lib are ignored if elaboration is performed with -update
switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Product Level 2: OTHER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
CCR 485515: 64-bit NC tools fail with snapshots > 2GB on AIX 32-bit kernel . . 18
CCR 235387: Multiple logical names mapping to a physical library errors out when
decompiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
CCR 222103: Goto - Cause does not work with dynamic counter-example waveforms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
CCR 217136: ncdc does not reproduce cds.lib with IEEE_pure path when required
20
CCR 41339: ncls errors out when different units have the same name in mixed-
language design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Product Level 2: PFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
CCR 522880: VHDL Event Synchronization with CPF behavior . . . . . . . . . . . . . 21
CCR 406975: Incorrect logging of signals in SimVision data file . . . . . . . . . . . . . 21
Product Level 2: SYSTEMVERILOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
CCR 261760: Dynamic arrays are not supported in structs . . . . . . . . . . . . . . . . . 22
Product Level 2: TCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
CCR 43502: Difference in behavior with VCD and EVCD dump while using save and
restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
CCR 31538: The NC-Sim Tcl expr command behaves differently on an array . . 22
CCR 27140: Line breakpoints deleted erratically when simulation is reset . . . . 23
Product Level 2: VCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CCR 184556: EVCD incorrect for VHDL ports of type OUT, when drivers exist inside
SMART model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Product Level 2: VPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
This Known Problems and Solutions document describes important Product Change
Requests (CCRs) for the NC-Verilog simulator and tells you how to solve or work around
these problems.
CCRs that have been filed against another product, such as Verilog-XL or NC-VHDL, may be
included in this document because they also apply to NC-Verilog.
Note: The operating system information included for each CCR usually indicates the platform
on which the problem was first identified. In many cases, the problem is not platform-specific
unless explicitly noted.
Note: The Planned Release information that is included for the CCRs listed in this document
reflects the Cadence estimate, at the time of publishing, of when the resolution will be
incorporated in the product. Communication of this Planned Release information is for
informational purposes only and should not be considered a warranty of any kind. Cadence
reserves the right to alter the planned release at any time without notice.
Updated Known Problems and Solutions documents are published at regular intervals.
Customers can view on SourceLink the most up-to-date information about the status of their
CCRs.
Product: NC-SIM
CCR 98155: Makefile.nc does not support .C extension for C++ on IBM
OS: AIX Version: 5.1
Description: Makefile.nc in the installation hierarchy does not support the .C extension for
C++ files on IBM even though xlC recommends that this extension be used for C++ files on
IBM.
Solution: Change the file extension from .C to .cc or redefine the CC_EXTENSION macro
to C.
CCR 434611: Block and Generate access not supported with portview
type IP author privilege
OS: ALL Version: ALL
Description: If the design consists of block and generate statements, the portview IP
author privilege may not enable access to objects declared in these blocks.
CCR 230561: Internal error when Verilog system function call is called
with protected arguments
OS: ALL_UNIX Version: ALL
Description: An internal error is generated when a Verilog system function call is called with
protected arguments.
Description: Running ncsim on a protected module that contains SDI/HDL content crashes
ncsim. The behavior of SDI/HDL system tasks, and other Verilog system tasks, with IP
protection is being defined. The use of system tasks in protected design units may cause
erroneous behavior.
Description: If VHDL attributes, especially predefined VHDL attributes, have been used in
a protected design, these attributes may reveal protected information. For example, the
path_name attribute will reveal the component and instance names of the design units.
Description: The use of system tasks inside a design that is to be protected may reveal
some of the protected information.
Solution: Avoid using system tasks inside the design to be protected, especially those
system tasks that dump design information, such as $display and $monitor.
Description: If an IP author has used a report statement in the design and has protected
it using ncprotect, the simulator may reveal some information about the protected objects
through the report statement.
Solution: Avoid using the report statement from the protected IP. If using the report
statement is essential, try not to report objects through the statement.
Solution: Because of the different Specman stages that can be invoked under irun,
presetting the env SPECMAN_PRE_COMMANDS has been restricted to passing the
contents of the environment to the simulation stage. You cannot use this environment
variable to affect comilation or the loading of Specman e code. For this you should use the
-snset or -sncompargs options:
irun -snset "config gen -default_generator=IntelliGen" test.e
Description: AST(s)/VST(s) are redumped for both VHDL and Verilog when the timestamps
are modified. However, COD/SIG files are retained for both languages across different hotfix
releases. The ASTs/VSTs should be regenerated only if the checksum differs (that is, if the
content of the source file has changed). In case of timestamp change, ASTs should be
retained.
Solution: Avoid operations like copy and move of any unmodified files to avoid regeneration
of ASTs and VSTs.
Description: Using the -confhier option to generate hierarchical configuration files may
result in a situation in which the generated configuration files cannot be compiled. This
happens if there is a cyclic dependency in the files.
For example, suppose that you have a design that contains three entities: top, mid, and
bottom, such that top instantiates mid, and mid instantiates bottom. Let there be two
libraries in the design into which these entities get compiled: lib1 and lib2. Entities top
and bottom are compiled into lib1, and middle is compiled into lib2.
If you then use the -confhier option to generate configuration files for this design, the
generated files, lib1_conf.vhd and lib2_conf.vhd will not compile.
The reason is that lib1_conf.vhd must be compiled in lib1, and lib2_conf.vhd must
be compiled in lib2. Moreover, to compile the generated configuration for entity mid
(cfg_mid_arch), the configuration for bottom (cfg_bottom_arch) must already have
been compiled. But, cfg_bottom_arch is in file lib1_conf.vhd, which needs to be
compiled in lib1, but cannot be compiled because it is dependent on mid, which is in turn
dependent on bottom. Hence, neither of the generated files will compile.
Solution: To avoid this circular dependency problem, use the -confflat option to
generate a flat configuration file.
Solution: None.
Description: On the AIX platform, it may not be possible to elaborate large designs using
the 32-bit version of the tools. This can happen when the elaborator needs more than
2Gbytes of available User Data memory. The maximum size that the NC tools can use on this
platform is 2Gbytes.
Solution: Cadence is aware of the issue and the solution suggested by IBM (involving the
use of shared memory) will require significant changes in our memory
allocation/management code. As an alternative, the IUS 5.3 and later versions of the tools
can be run in 64-bit mode, which does not have the 2Gbyte limit.
CCR 562592: IUS with Specman may hang on Linux EE5 when the IUS
profiler is on
OS: LINUX Version: RHEL5.0_64
Description: If a design is simulated along with the Specman environment, and the IUS
profiler is on (that is, the -profile option is used), then the simulation may hang on the RHEL
5.0, 5.1, and 5.2 platforms.
Solution: Simulate the design without the IUS profiler on RHEL 5.0, 5.1 ,and 5.2 platforms.
If a profile is required for the design under simulation, please use RHEL4, or RHEL5.3.
CCR 485610: NCelab binds with wrong module when multiple choices
exist
OS: LINUX Version: REDHAT7.2
Description: In some circumstances where multiple libraries contain modules that have the
same name, the elaborator may bind to the module that you do not want it to bind to.
In addition, please report the problem to Cadence along with a test case.
Description: The function std_logic_arith in IEEE package, does not work correctly for
integer overflow. A warning is generated instead of an error. If you compile with the ncvhdl
-nobuiltin command-line option, the error is correctly reported during simulation.
However, the behavior of the function should not differ when compiled with or without the
-nobuiltin switch.
Description: The library backward SAIF file shows incorrect dump for timing and toggle
attributes for certain conditions.
Solution: None.
CCR 209971: Contention time and inertial and transport glitch counts are
not supported for SAIF
OS: ALL Version: ALL
Description: Contention time TB and inertial and transport glitch counts (TG, IG, and IK)
are currently not supported for SAIF.
Solution: None.
CCR 58274: EVCD does not dump the initial value information for signals
OS: SOLARIS Version: 7
Description: The EVCD standard does not include the dumping of initial values of the
signals being probed. The format defines the dumping of the changed values from the default
initial values.
Solution: If it is critical to have the initial values recorded (for example, if you are using the
ncgentb utility to generate a testbench), use assignments at time #0 to create initial values.
Description: If you dump EVCD for subelements of a vector port, and then generate a
testbench using the ncgentb utility, the generated testbench fails to combine these
subelements into a single vector. This results in incorrect testbench generation.
Solution: Do not generate EVCD files for subelements of a vector port. When EVCD for an
array has to be created, dump the complete vector.
CCR 53180: Some objects are not shown in the waveform viewer during
interactive simulation
OS: ALL Version: ALL
Description: In some instances, adding vector objects to the waveform viewer during an
interactive simulation results in a "???" being displayed rather than the value of the object.
This is a problem involving the use of hexadecimal notation in bit-string assignments.
Solution: The problem can be resolved by elaborating the design using the ncelab
-expand command-line option.
CCR 43086: Waveform editing through Tcl on signal objects may result
in incorrect output
OS: SOLARIS Version: 7
Description: This problem occurs when the signal in question satisfies the following
conditions:
■ The signal is assigned an expression with zero delay in VHDL, and has a waveform
deposited through Tcl.
■ The expression is another signal name which has a waveform in a different process.
The problem happens because the zero delay assignment in VHDL does not take into
consideration waveform editing due to waveforms deposited through Tcl. This problem exists
in both vectorized and non-vectorized cases.
This is not a very common scenario and the behavior is correct in all other situations.
Solution: None.
Description: The elaborator does not detect changes to the cds.lib file. For example, if
you change the physical mapping for a work library and then reinvoke the elaborator with
ncelab -update, the elaborator cannot detect and take into account these changes.
Moreover, if the argument passed to the -cdslib switch is changed, the elaborator
regenerates the snapshot, but does not reflect the latest changes.
Solution: The only workaround is to recompile the design if the cds.lib file has been
modified.
CCR 485515: 64-bit NC tools fail with snapshots > 2GB on AIX 32-bit
kernel
OS: AIX Version: 5.1
ncelab fails with the following message when writing snapshots that are greater than 2GB:
ncelab: *E,DLWRTF: Write of intermediate file for snapshot worklib.test:behave
(SSS) failed (Invalid argument).
ncsim fails with the following message when reading snapshots that are greater than 2GB:
ncsim: *E,DLREAD: Intermediate file for snapshot worklib.monster_eprom_test_conf
ig:configuration (SSS) is corrupt (truncated?).
Solution: The AIX 32-bit kernel architecture does not support file read and write beyond
2GB in one read/write system call. If ncelab and ncsim fail with the errors shown above, use
a 64-bit kernel AIX machine to run designs that read/write simulation snapshots greater that
2GB.
Description: If multiple logical names are mapped to a single physical library in the
cds.lib file, the decompiler errors out upon reference to any logical library name other than
the first logical name.
For example, in the cds.lib file, multiple logical names are mapped to a physical library as
follows:
DEFINE lib1 ./work
DEFINE lib2 ./work
DEFINE lib3 ./work
The decompiler will only contain lib1 in the cds.lib file that it creates. This is because the
decompiler has no information on the aliases lib2 and lib3, and will error out on reference
to any of the two.
CCR 222103: Goto - Cause does not work with dynamic counter-example
waveforms
OS: ALL Version: ALL
Description: If you are debugging an assertion failure using the dynamic waveform, the
Explore - Goto - Cause operation at a signal transition will not point to the HDL source line
that caused this transition. Instead, it will open the Source Browser with the Signal Flow
Tracer.
Solution: None.
CCR 217136: ncdc does not reproduce cds.lib with IEEE_pure path when
required
OS: ALL Version: ALL
Description: In designs where the IEEE library pointer is referencing the IEEE_pure version
located in install_dir/tools/files/IEEE_pure/IEEE instead of the default version
of IEEE in install_dir/tools/files/IEEE, ncdc is not able to reproduce a cds.lib
file that contains a path to use the IEEE_pure version of the libraries.
Solution: The cds.lib file that ncdc produces must be edited to contain the proper path
to use the IEEE_pure version of the IEEE library. For example:
include $CDS_INST_DIR/tools/inca/files/cds.lib
CCR 41339: ncls errors out when different units have the same name in
mixed-language design
OS: ALL Version: ALL
ncls will error out if the case of the design unit name is not preserved. For example, the
following command generates a "No matching units found" error:
% ncls WORKLIB.TRUTH_TABLE:BEHAVE
If there are no Verilog units with the same name in the work library, ncls treats the design unit
names in a case-insensitive manner.
Solution: Preserve the case while specifying the design unit name.
Solution: Event ordering needs to be restructured in such cases. It is a user error if the
process block is expected to get the updated value of a signal/port within the process block.
These value updates are scheduled for the next available delta cycle in the simulation. Thus,
their values will be accurately reflected after that delta cycle simulation has been completed.
In the current cycle, all other signals/ports referring to the updated port will continue to see
its previous value.
Description: Incorrect data may be stored in the SimVision data files. This shows up as a
signal that suddenly stops changing (when up to this point there were many transitions). The
waveforms for this signal will be correct at the source, but as the signal is traced through the
hierarchy, it will exhibit this incorrect behavior in other levels.
Solution: None.
Solution: None.
CCR 43502: Difference in behavior with VCD and EVCD dump while using
save and restart
OS: ALL Version: ALL
Description: There is a difference in ncsim behavior with the Tcl save and restart
commands while creating VCD and EVCD dumps. The simulation time up to which the
dumping occurs can be different for an EVCD dump when compared to a VCD dump.
Solution: When dumping EVCD, close and then reinvoke the simulation instead of using the
save and restart commands.
Description: The NC-Sim Tcl expr command behaves differently on an array, depending
on how the array was created.
Solution: If the expr of the array is printed first, the behavior is normal.
ncsim> array set c {ns 0}
ncsim> expr {$c(ns)}
0
ncsim> expr {$c(ns) - $c(ns)}
0
Description: When you have line breakpoints set within subprograms, within processes,
and so on, some of these breakpoints get deleted when you reset the simulation. This
behavior is erratic in that some breakpoints are deleted, while others are not.
CCR 184556: EVCD incorrect for VHDL ports of type OUT, when drivers
exist inside SMART model
OS: SOLARIS Version: 8
Description: An EVCD database is missing information for ports that are coming direct out
of SMART models. These ports do not change as much as compared to their counterparts in
a VCD or SHM database. This indicates that the driver information from within the SMART
model is not being collected while doing the EVCD dump. These ports have multiple drivers
of various strengths at any given time, and if the strongest driver is one coming from the
SMART model, that port will not show correct value changes.
Solution: None.
Description: A crash may occur when an external process is started through the VPI
interface, and when files are read in by the external process. The different run directories in
GUI and batch mode causes the crash. This problem only depends on the external process
and has nothing to do with the simulator or the VPI interface.
Solution: Link every file and directory that the process needs into the AMS run directory.
Description: Restart callback routines (that are invoked at the start or end of restart) cause
a segmentation violation if they are declared static on a Linux platform.
Solution: Do not declare restart callback routines as static if you intend to run your
application on a Linux platform.
Product: NC-VERILOG
CCR 82567: The use of Verilog-2001 features in a protected cell may leak
protected information
OS: ALL Version: ALL
Description: If you have used a Verilog configuration in a design, and have used ncprotect
to protect the design, the binding information for the protected code can be accessed using
VPI.
For example, the following code will cause the warning to be generated:
module mytest;
integer i,v,lr,ur;
integer s,w;
initial
begin
s=2;
for(i=0; i <3; i = i +1)
begin
v = $dist_uniform(s,$rtoi(-10.0),$rtoi(10.0));
$display("The value of v is %d", v);
end
end
endmodule
Solution: The $rtoi function does not return an integer in the sense of a Verilog integer
(which is essentially a 32-bit quantity). This function returns the integer portion of a real
truncated to a 64-bit quantity. So it is actually defined as returning a signed 64-bit value. This
is true regardless of whether a 32-bit or 64-bit executable is being used.
The reason that $rtoi was defined as returning 64 bits was to allow for the fact that values
may be present in a real that may be too large to be represented in 32 bits.
Using the example shown above, the workaround to this warning is to assign $rtoi(-10.0)
to an interger first, and then use it in the function $dist_uniform. This will eliminate the
warning messages.
For example:
module mytest;
integer i,v,lr,ur;
integer s;
initial
begin
s=2;
for(i=0; i <3; i = i +1)
begin
lr=$rtoi(-10.0);
ur=$rtoi(10.0);
v = $dist_uniform(s,lr,ur);
$display("The value of v is %d", v);
end
end
endmodule
Description: If
$dumpvars(1, <scope_name>);
is used within the always @* block, ncelab errors out with the following message:
ncelab: *E,INNOTR an instance name is not a legal rvalue
Solution: Instead of using always @*, expand the contents of *. For example, use always
@(in1 or in2) instead of always @*.
CCR 20299: UDP does not get compiled via Design Prep if it is missing
instance name
OS: ALL Version: ALL
Description: If a higher-level design instantiates a UDP without the instance name, the
instance name will not be in the pc.db file, and the 5.X config will not consider the UDP as
part of the design. The UDP will not be compiled via Design Prep.
CCR 8910: Design can elaborate via bindings but via config it fails
OS: SUN4U/5.7 Version: NONE
Description: Any time you have an implicit wire driven by only a VHDL instance, you get a
message. This is related to autoshelling.
Solution: None.
However, the cds.lib file still contains the library path relative to the directory in which
ncprep was invoked. For example if ncprep was invoked from directory a as follows:
a> ncprep +redirect+./b *.v
All the files would be written to directory a/b/, but the cds.lib file in a/b/ would still
contain the path as ./b/INCA_libs/worklib. Thus, RUN_NC would not work when
invoked from a/b/ due to the incorrect path.
1. After running ncprep, copy the cds.lib and hdl.var files from path to the directory
from which ncprep was invoked. In the example above, copy the files from a/b/ to a.
This option creates the compiled libraries (INCA_LIBS) in the location specified by <path>,
and creates all other files (including cds.lib) in the current working directory.
Solution: Use a local parameter to hold the value of the index expression. For example:
localparam p = f(x);
assign w[p] = y;
assign w[p +: 8] = z;
mod u1 (.out(w[p]));
Description: Concatenated signals passed using the multiplier into a module do not
represent the same signal strength.
In the following example, there are two signals, B and BB, which are both derived from a signal
DB. Signal B shows a strength of weak 1, while signal BB shows strength of strong 1, when it
should be weak 1. For example:
mymod U2 (.B(DB[0:10]), .BB({3{DB[3]}},DB[3:4]);
Solution: Modify the netlist so that, instead of using the multiplier concatenation, you are
using "equivalent" concatenations. That is, modify:
mymod U2 (.B(DB[0:10]), .BB({3{DB[3]}},DB[3:4])
to:
mymod U2 (.B(DB[0:10]), .BB(DB[3],DB[3],DB[3:4])
CCR 485711: Default timescale for Verilog-XL and NC-Verilog are different
when recording to database
OS: SOLARIS Version: 7
Description: When `timescale is not defined in your HDL, you will get different simulation
data for Verilog-XL and for NC-Verilog. By default, Verilog-XL uses `timescale 1ns/1ns,
while NC-Verilog uses `timescale 1s/1s.
CCR 485690: NCSIM fails when P-Threads are linked on the Linux
platform
OS: LINUX Version: RedHat7.0
Description: NCSIM fails when P-Threads are linked on the Linux platform. P-Threads are
not supported with NCSim on Linux. The threading library does not work consistently on this
platform.
Description: The $sformat task can be used to format values. According to the IEEE
LRM, it can be used in the following ways:
$sformat (output_reg, format_string, list_of_arguments);
length = $sformat (output_reg, format_string, list_of_arguments);
When used in the second manner, as in the following example, the elaborator generates an
error.
length = $sformat (output_reg, "%b %h %b", mem[15], mem[5], mem[11]);
Solution: It is not possible to use the same name for a system task and a system function.
NC-Verilog has chosen to implement $sformat as a system task. This CCR illustrates a bug
in the IEEE specification, which is being reported to the IEEE.
Description: The Verilog system task $ftell() does not function correctly on Linux due
to an ftell() implementation bug in Linux's stdio library.
Solution: None.
Description: Statement tracing gets disabled when the reset or restart commands are
used while running the simulation.
Solution: None.
CCR 29122: Edge to source may not work with non-blocking assignments
OS: ALL Version: ALL
Description: Tracing the cause of a transition may not work with non-blocking assignments
that have delay control. Depending on the time delay involved, there may be an error in trying
to trace the statement that caused the transition.
Solution: None.
CCR 35452: wrapsize option with recordfile does not work with
NC-Verilog
OS: ALL Version: ALL
Description: The wrapsize option to $recordfile does not work with NC-Verilog. The
documentation for all supported releases of NC-Verilog states that this option is supported.
However, it does not work for any version of NC-Verilog.
Solution: This option works with NC-Verilog if you add the following to your
LD_LIBRARY_PATH or SHLIB_PATH:
install_dir/tools/simvisdai/lib
CCR 30875: Database opened without the -statement option does not
have variable declaration
OS: ALL Version: ALL
Description: When a database is opened without the -statement option, the Design
Browser does not recognize nets, registers, or variables. Therefore, if you try to use the
Select - Nets or Select - Registers menu choices, the Design Browser cannot select any
signal probed into the database.
Solution: None.
CCR 286582: Tcl force command does not extend 'x' or 'z' values beyond
32 bits
OS: ALL Version: ALL
Description: In Verilog-2001, a Verilog value such as 'bx that does not have an explicit bit
size gets the bit size from the context where it is used. Prior to this, it was treated as a 32-bit
literal. This change has not been reflected in the Tcl force command, which is supposed to
behave identically to the Verilog force command.
Simulating this model in interactive mode, the following commands illustrate the problem:
ncsim> force r = 'bz
ncsim> value r
34'h0zzzzzzzz
ncsim> run
ncsim: *W,RNQUIE: Simulation is complete.
ncsim> value r
34'hzzzzzzzzz
ncsim>
The force from Tcl did not extend the z to all 34 bits, only the first 32. Prior to 2001, this was
correct. But now it has changed, as you can see from the equivalent Verilog force in the
model.
Solution: Use explicit bit size when the literal should be greater than 32 bits. For example:
ncsim> force r = 34'bz
CCR 126155: Describe and driver Tcl commands give value(s) of entire
multi-dimensional array
OS: ALL Version: ALL
Description: The Tcl describe and drivers commands describe the entire array when
used on a multi-dimensional array or part-select of the array. The commands also show the
values of the entire array, and not the part-select under question.
Solution: None.
CCR 201861: Same named file in a new working directory does not force
Verilog recompilation
OS: LINUX Version: ALL
However, two separate working directories may have Verilog source files with the same
names. In this case, if you issue an ncverilog command from one directory, and then issue
the same command from the second directory, the second command does not update the
design being simulated.
Solution: To force the recompilation, make the command lines differ when compiling from
the two separate directories. For example, add different +name+name options to the two
ncverilog command lines.
Description: In NC-Verilog, in cases where a net is connected to a supply net, the entire net
is treated as a supply net. Therefore, with NC-Verilog, there is no direction for a supply net.
This is not the case with Verilog-XL.
Solution: None.
Solution: Avoid using cds.lib files in directories to be used later with the ncverilog -y
switch. For any testing with such a directory, use ncvlog in default mode. The default mode
generates a local work library in INCA_libs and does not require a cds.lib or hdl.var
file.
Description: When ncdc encounters a module that has been protected, it will produce the
following warning message:
WARNING (ncdc): Protected code is encountered, can't decompile!
Since this is not valid Verilog code, it will not pass through the ncvlog parser until this issue
has been resolved.
Solution: Keep the protected modules which were used in the design in a separate file which
can be parsed by ncvlog when you parse the output of ncdc. Go through the output of ncdc
and remove all modules that it could not decompile due to protection.
CCR 17001: pak files do not get updated if you copy an existing library to
a new name
OS: ALL Version: ALL
Description: If an existing library is copied to a new name, the library with the new name is
not usable.
Solution: Recompile the library after copying it. Recompiling will eliminate the problem.
CCR 620104: XBUS example does not work with -svpp switch
OS: ALL Version: ALL
Description: Using the -svpp switch with the XBUS example provided in IUS 8.2 (and later)
results in an error of the form:
typedef class xbus_transfer;
|
ncvlog: *E,UNDIDN (./INCA_libs/irun.lnx86.08.20.nc/svpplib/specials/tlm_if_base_
xbus_transfer_xbus_transfer.svi,84|26): 'xbus_transfer': undeclared identifier [
12.5(IEEE)].
Solution: Do not use the -svpp switch when running the XBUS example.
Description: In some cases, optimizations for testbench fork/join blocks will not be applied
if there is a $stop and/or a $finish statement inside the block. In addition, an optimization
will not be applied if there are more than 10,000 statements in a block.
Solution: Move the $stop or $finish statement out of the fork/join block and put them into
a separate initial statement.
Description: The VPI call vpi_iterate(vpiDriver, simNetH) for a bus bit may have
slow performance if another bit of the same bus is connected to a constant (even if the other
bit is unused).
Solution: Modify the design by assigning wires to supplies and replacing each 1'b0/1'b1 bit
constant with the matching wire.
Description: The AIX 64-bit plaform does not support coverage generation. No coverage
model is generated when you use the -lps_verify command-line option.
Solution: None.
Solution: None.
Description: When simulating a Verilog netlist with a CPF file, the output of the SRPG flip
flops goes to X when their power domain is turned off, but they remain X even after power is
restored. This should not happen, and the Q output should be restored to the value that it had
when the save pin of the flip flop was activated.
Description: Inline constraint expressions cannot contain functions with prefixes. (A prefix
is used to specify a class handle.) For example, the following is not currently supported:
r = ch1.randomize() with { r1 == ch1.fun1(); };
Solution: To workaround this, remove the function call's prefix. Or, introduce a temporary
variable that is set in a pre_randomize function. For example:
r = ch1.randomize() with { r1 == fun1(); }; //Removes prefix ch1 in the function
call
Or:
class ...
int tmp;
void function pre_randomize(); tmp = ch1.fun1(); //Creates a temporary
variable for the function call endfunction ... r = ch1.randomize() with { r1 ==
tmp; };
Description: The IEEE P1800 LRM lists the following restrictions for functions that are
called in constraint expressions: 1) Cannot contain output or ref arguments 2) Should be
automatic, and have no side effects 3) Cannot call rand_mode or constraint_mode
Solution: None.
Description: svpp has a current limitation such that the type used for a specialization must
be in the same scope as the parameterized type.
package pkg;
class myclass#(type T=int);
T value;
endclass
endpackage
module test;
import pkg::*;
class C;
endclass
myclass #(C) myc = new; endmodule
Solution: The class used for the specialization must be in the same scope as the
parameterized type. In the example above, class C must be declared in package pkg (or class
myclass#(T) must be declared in module test).
package pkg;
class myclass#(type T=int);
T value;
endclass
class C;
endclass
endpackage
module test;
import pkg::*;
myclass #(C) myc = new;
endmodule
Description: When an event assignment involves probed named events, some triggers of
the events might not be recorded. This issue occurs with SHM and VCD named event probes.
Solution: None.
Description: ncelab gives *internal* when the element of the packed struct with bit overflow
:
module top();
struct packed{ bit [2:0][9999999999:0] a ;}abc;
endmodule
■ ncelab generates the internal error only when the -access +rwc option is used. If you
do not use this option, ncelab does not crash.
Description: SystemVerilog does not support scope randomize calls from protected Verilog
code.
Solution: At this time, there is no workaround except to unprotect the Verilog code.
Non-local functions are functions that reside in another design unit (such as another module,
program block, package, or interface). Non-local function calls are usually invoked by
out-of-module references, unless the function has been imported from a package.
Description: There is a current limitation on the probing of interfaces such that an interface
that is passed through a port is not probed by a call to $shm_probe() that designates a
portion of the hierarchy below the actual instance of the interface.
Solution: To probe the contents of the interface, you can call $shm_probe on the instance
of the interface itself and/or on any level of the design hierarchy at or above the interface
instance.
CCR 183443: Wrong file name may be given for SDF interconnect warning
OS: ALL Version: ALL
Description: Incorrect SDF file names may be displayed when reporting errors or warnings
during interconnect annotation.
Interconnect verification is conducted long after SDF files have been read and processed.
While line numbers are tracked during the SDF process, file names are not. When warnings
(for example, SDFINC) are reported, the file name in the last $sdf_annotate is reported,
and if the -sdf_verbose option is used, the interconnect annotation information is also
reported to the log file specified in the last $sdf_annotate. This may not be correct if
multiple $sdf_annotate tasks exist.
Solution: None.
In the above scenario, when both buffers have their enable on, the output of the continuous
assign (out) gets the data flow from the flow of the interconnect (u1a) instead of the value of
the zero delay (u1b).
Solution: None.
Description: Verilog-XL allows registers to be used in timing checks, but NC-Verilog errors
out.
Solution: The Verilog LRM states that vectored nets are supposed to be used in timing
checks and not registers. Change the register to a vectored net.
Description: Prior to OVM 2.0, the binding of the default constructor arguments, name and
parent, were bound by name in the factory. In OVM 2.0, the name and parent arguments
are bound by position. For example, the following code will not compile:
class mycomp extends ovm_component;
function new (ovm_component parent, string name); // Incorrect order
super.new(name,parent);
endfunction
`ovm_component_utils(mycomp) // Factory registration has compile error.
endclass
Solution: The name argument must be the first argument in the constructor and the
parent argument must be the second argument. For example, the following code will
compile correctly:
class mycomp extends ovm_component;
function new (string name, ovm_component parent); // Correct order
super.new(name,parent);
endfunction
`ovm_component_utils(mycomp)
endclass
Adding a third argument must follow the string name and ovm_component parent arguments
Solution: None.
Solution: To stop/resume the SHM database, you can use the following:
■ The simulator Tcl command database -disable
■ The system tasks $recordoff/$recordon
Description: In a Verilog design in which a Verilog module is instantiated, if only the portmap
information of the instantiation is protected, the port information is visible through VPI.
Solution: Instead of protecting only the portmap information, protect the complete
instantiation statement, or protect the port declarations in the instantiated module.
CCR 50068: The vpi_get_value routine does not return a value for a
continuous assignment
OS: SOLARIS Version: 8
determine the contribution of each assignment to the resolved value of the net using the
handles to the continuous assignment statements themselves.
Solution: Use the value of the expression on the right-hand side of the continuous
assignment's equal sign, rather than the value of the assignment itself.
CCR 28838: Using C++ functions does not create the correct simulator
executables
OS: SOLARIS Version: 7
Description: When C++ functions like cout are used in the PLI/VPI source files and linked
using the PLI Wizard utility (with the NC Simulators > NC-Verilog > libpli option),
libpli.so, ncelabC, and ncsimC are created. However, while running ncelabC, you will
get a relocation error.
Solution: None.
Description: If the design contains SWIFT models, you cannot restart from a saved
snapshot.
Solution: None.
CCR 5825: Reset does not work after a finish command has been
processed
OS: SUN4/5.5.1 Version: NONE
Description: Reset does not work if the reset is executed after a $finish. Resetting works
if the command is issued before $finish.