This patch fixes a few compile warnings and adds the new packed routines to the ivl.def file so that this links correctly on cygwin.
This patch fixes a few more bugs in the enumeration code. It add support for saving the file and line information to make diagnostic messages better. It updates some of the compiler warning messages to use the file and line information. It passes if the enumeration type is signed all the way to the code generators. It fixes the parser to correctly have the range after the signed designation for the vector types. It adds a warning that vvp does not currently support a negative two state enumeration value.
This patch adds code that allows the targets to determine if a logical gate came from a continuous assignment. This helps some of the targets generate code that more closely matches the input. It also reworks/simplifies the synthesis of && and || since the compiler has already converted the two operands to single bit form and fixes a mismatched delete from a previous patch.
This patch adds some preliminary module port information to the ivl interface. This may change as I investigate exactly what is needed. It also fixes a few minor bugs (a missed local variable and spacing)
This patch modifies the compiler and the ivl interface to pass the type of indexed part select that is being represented (up/down) in a procedural L-value or R-value. This is needed by any back end that wants to correctly denormalize the (zero based) base expression.
This patch adds support to the compiler/ivl interface for getting the original UDP definition port names. ivl_udp_port() was added to get this information.
This patch adds/fixes the following: Adds file/line information to a UDP definition. Prints an error message if a UDP is passed signals wider than 1 bit. A UDP should supports a range, but the compiler currently does not. Add scope information for constants. Fix the Icarus extension UDP table entry element 'h' to use h. The ivl_udp_init() value is a char not unsigned. Add FILE_NAME() for a bunch more of the ivl interface objects.
This patch fixes a few compilation warnings introduced by the enumeration code. It also updates the ivl.def file so that the proper routines get exported under windows.
This patch adds the ability to call a system function as a task for the SystemVerilog generation (-g2009). The return value is really calculated, but it is ignored.
This patch adds support for passing the delay selection to vvp. It adds a new header :ivl_delay_selection "<value>"; that has the values TYPICAL, MINIMUM or MAXIMUM depending on the -T flag to iverilog. This information is needed by $sdf_annotate to select that appropriate value for a triplet when "TOOL_CONTROL" is specified (default).
This patch adds real functionality for `celldefine and pushes this property to the run time which can access this with vpiCellInstance. This is technically only available for a module, but all scopes have the property and only modules should return true when the 'endmodule' is between a `celldefine and `endcelldefine directive.
Previously Icarus normalized the results so array [7:0] would be the same as array [0:7]. This works just fine for simulation, but the VPI calls can select the left or right value and this was incorrect for the [7:0] case since it was being normalized to [0:7]. This patch swaps the two values in the a.out file and from this creates the previous first/last values and a new flag that can be used to get the correct left and right values for the VPI interface.
This patch adds support for 64 bit non-blocking delays in procedural code. We fixed the procedural delay operator (blocking delays) earlier. This patch mostly mimics what was done there. The continuous assignment delay operator still needs to be fixed.
This includes enough API to get the branch nexus bits and signals and show them in the dump. This also includes creating the reference ground for branch access functions that use the implicit ground.
Add support for analog processes with analog contributation statements all the way down to the ivl_target code generator API.
The natures of disciplines were already available, this just brings the information forward to the ivl_target.h API and exposes them via access functions.
Signals may have VMA disciplines attached. Make the attached discipline visible through the ivl_target.h API. Also, re-arrange the internal handling of the discipline structure so that we can expose disciplines through the ivl_target C API without creating new structures. The t-dll-api implementations of the discipline access functions can look at the elaborated discipline structure directly. This is possible since the discipline parse and elaboration are very simple.
This patch pushes the automatic property for both tasks and functions to the code generators. The vvp back end does not currently support this so it will error out during code generation. The VHDL back end should be able to use this property and tgt-stub prints the property. Having this will also make it easier when we do adding this to the runtime.