This patch backports from multiple places checks that verify that the various primitives are given the correct number of port expressions.
This is a back port from development of the code to put and check that the vvp input file is the right version. It also adds the -V flag to vvp. It does not add the VERSION_TAG information so will only produce the single string ivl_version tag. The runtime will read both forms since if it is feed a V0.9 file we want it to complain nicely (no syntax error). To change the displayed version for the various programs and checks change version.h.
This is a back port from development of the code to resize an unsized constant value to 32 bits. Development used integer_width, but that is not supported in V0.8. Development also supports using the expression width which V0.8 does not.
This patch mirrors what was done in development to fix the mux with one input as Z optimization. It should use a MOS device instead of a bufif device.
This patch mirrors what was done in development to only return a real value when realtime is called.
This patch mirrors what was done in development to complain about a `timescale inside of a module definition.
This we are working on closing out this release series, install with the 0.8 suffix enabled by default from now on.
…put. Users expect that vpi_put_value() will keep a copy of the string that is passed to it. This patch implements this buy copying the string and then freeing it after the actual put_value call.
This configure option causes the installed commands to have a suffix string that makes them distinct from other versions that also have a suffix string. This allows for multiple installed versions of Icarus Verilog. Also, move installed C/C++ header files into a subdirectory of their own under the target include directory, to make clearer the purpose and source of those files. (cherry picked from commit 4bc90f7)
There was an error when calculating the negative of a value that was the same width as the native machine word. This patch is similar to what was done in 0.9 to fix the problem there.
This patch fixes the verinum < and <= operators to directly compare the long result not the difference. Because of overflow the difference can give an incorrect value. Using a long value is technically wrong, but that will need to be a different patch. It also fixes the eval_leeq_() routine to correctly build the largest value in a signed comparison.