Stop syntax errors caused by things like this: (, others => '1')
This patch causes a thread that is created to evaluate a function to be executed immediately. The parent thread is resumed when the function thread terminates.
This removes some unwanted artifacts from the output.
This is caused by using a hierarchical reference (which can't be translated to VHDL). The result of get_decl is NULL since the signal has been declared in a different VHDL architecture. Adding the assert is cleaner than having it segfault, for the moment, until a nicer error message can be added.
Previously this was handled by creating an internal signal that was connected to the output and could also be read inside the entity. The correct solution is to make the output `buffer' rather than `out'. However, this does not work in the case when an output is connected to an output of a child entity, and that values is read in the parent. In this case *both* the outputs of the child and the parent need to be made `buffer'.
This will be used to implement combinatorial UDPs
When elaborating a parameter expression fails we need to set the expression to 0 since it has already been partially allocated. Doing this allows us to not evaluate the dummy expression later.
This patch adds the time and realtime properties for user task and function arguments. It also make a common rule for real and realtime since they are the same.
User task and function arguments can take an optional reg property. This property is completely ignored by Icarus.
If a function definition has no ports and no return type it is assumed to be a bad definition so we don't check it further.
The list of defparams in the pform module definitions (in class Module) should not be consumed when they are used. The module may be instantiated moltiple times, so consuming the defparams during elaboration will cause subsequent instantiations to not have the defparams. That's wrong.