Martin Whitaker
7e82a37fa3
Extend -gstrict-expr-width to cover unsized numbers.
...
To be strictly compliant with the standard and compatible with other
EDA tools, unsized numbers should be treated as having a fixed size
(the same size as an integer). The -gstrict-expr-width option is
extended to allow the user to enable this behaviour.
2013-10-20 23:16:11 +01:00
Martin Whitaker
141a23690e
Improved error message.
2013-10-20 23:01:26 +01:00
Martin Whitaker
a024efb615
Add -compatible command line option to vvp.
...
This option is intended to make it easier to compare results from
Icarus with results from other simulators. For now, the only effect
it has is to change the default format for displaying real numbers
when no format string is supplied.
2013-10-20 22:59:53 +01:00
Stephen Williams
e60804cf41
Handle initialized darray of strings
...
This includes adding support for returning strings from functions,
adding initializing new darray with array_pattern strings, and
assigning an array_pattern of strings to a preallocated darray.
Also fix up support for initializing array with simple string
expression.
2013-10-19 15:34:15 -07:00
Stephen Williams
d5a0f2fc07
Add support for simple expression in darray new initializer.
2013-10-19 15:34:15 -07:00
Stephen Williams
2464582587
Handle number literals as real-valued r-values.
2013-10-19 15:34:15 -07:00
Stephen Williams
82ebf6372c
Generate code to implement new element initializers.
2013-10-19 15:34:15 -07:00
Stephen Williams
3945b9df45
Elaborate darray new element initializer to ivl_target API
2013-10-19 15:34:15 -07:00
Stephen Williams
96813f76c1
Generate code to implement array_pattern assignment to darray
...
This implements the feature in the VVP code generator.
2013-10-19 15:34:14 -07:00
Stephen Williams
2030e06988
Parse/elaborate some array-patterns down to the ivl_target API.
2013-10-19 15:34:14 -07:00
Stephen Williams
cd85a42acc
Elaborate the null darray literal as a null expression.
...
This leads to the correct code being generated in the vvp
code generator.
2013-10-19 15:34:14 -07:00
Stephen Williams
18c338ad09
Handle array assignment patters through pform.
...
This gets us to elaboration. In the process also fix up ivl_type_t
type comparisons to do deep type comparison.
2013-10-19 15:34:14 -07:00
Stephen Williams
2355e1ed8e
Clean up some NetNet variable type handling.
2013-10-19 15:34:14 -07:00
Stephen Williams
5494c9ae09
Support DARRAY objects as port arguments.
2013-10-19 15:34:14 -07:00
Martin Whitaker
20ad1ff261
Fix zero/sign extension of parameter values in expressions.
...
For sized parameters, the choice of zero or sign extension should
be based on the expression type, not the parameter type.
2013-10-19 13:14:39 +01:00
Cary R
589bb59268
Implement %disable/fork in run time.
2013-10-18 17:22:10 -07:00
Cary R
e12d2b2f36
Explicitly instantiate coerce_to_width() for vvp_vector4_t
2013-10-18 14:38:38 -07:00
Cary R
c64b8900ca
Add support for disable fork to the compiler.
2013-10-17 19:34:57 -07:00
Cary R
1cd72d375c
Fix the label count for the join_any and join_none cases
2013-10-17 15:43:01 -07:00
Cary R
aa9a7435dd
Start of support for %disable/fork opcode.
2013-10-17 15:10:58 -07:00
Cary R
12c588fc35
Mostly fix a portability problem in $rtoi (run time)
2013-10-11 17:32:58 -07:00
Cary R
8f0687adb7
Fix white space issue.
2013-10-11 11:27:46 -07:00
Cary R
281556e93d
Fix another real to vpiIntVal conversion in the run time
2013-10-11 11:26:17 -07:00
Cary R
a196af8e15
Rework constant system function code and add $rtoi and $itor
2013-10-11 10:52:02 -07:00
Cary R
7b07fca285
Fix $rtoi to correctly convert NaN and +/- infinity
2013-10-11 10:49:45 -07:00
Cary R
095cedb305
Fix real to vpiIntVal conversion in run time
2013-10-11 10:49:28 -07:00
Cary R
d5823b3e55
update a copyright and fix the define order.
2013-10-07 16:51:48 -07:00
Jared Casper
51ca2d1243
Fix using array elements in expressions with an array element lval.
...
When you have an expression like this (extreme example):
a[idx[1]][idx[2]*4 +: 4] <= #(idx[3]) 4'ha;
where a is a reg array and idx is a reg or net array. The retrieval
of idx[2] was clobbering index register 3, which was set before
evaluating the part offset expression, then used in the %set/av of the
array value. (likewise for idx[1] and idx[3]])
To avoid this issue, this patch adds and uses a new instruction
%ix/mov which simply copies one indexed register to another. When
necessary, expressions are first evaluated into temporary registers to
avoid clobbering, then moved in to place before the %*/av instruction.
2013-10-07 16:47:50 -07:00
Jared Casper
ec8081f983
Handle `", `\`", and `` in macro definitions.
...
Implements page 644 of IEEE 1800-2012.
`` is now overloaded with the Icarus-specific "stringify" expansions.
It is now used as indicated in 1800-2012 when appearing inside a macro
definition, and the Icarus way when not. To do so, it uses the fact
that istack->file is NULL iff we are processing expanded macro text,
which is a bit of hack but works as is.
`" and `\`" on the other hand are treated the same inside and outside
of macro definitions.
2013-10-07 16:16:00 -07:00
Martin Whitaker
34643d9628
Fix for br937.
...
When writing a string value, vpi_put_value cannot assume the target vector
is a multiple of 8 bits wide.
2013-09-28 17:17:38 +01:00
Cary R
68db6c5a65
The seed passed to $random() should not change the implicit seed.
2013-09-23 17:44:13 -07:00
Cary R
d564e054e5
vlog95: translate most do/while loops
2013-09-23 17:31:39 -07:00
Cary R
8616e3d6fa
Fix space/tab problem.
2013-09-23 10:32:54 -07:00
Cary R
2c2ab24c8f
Fix problem when compiling with valgrind support
2013-09-23 10:29:45 -07:00
Stephen Williams
d025c8aa93
Non-method tasks/functions support default arguments.
2013-09-20 20:44:57 -07:00
Stephen Williams
7534abe325
Allow void functions to be called in functions.
2013-09-20 20:44:57 -07:00
Stephen Williams
7bc94d7810
Support functions that return void.
2013-09-20 20:44:57 -07:00
Stephen Williams
a9a1c50268
Support "this" for calling task methods.
2013-09-20 20:44:57 -07:00
Stephen Williams
5084a23417
Sorry messages for calls to superclass constructor.
2013-09-20 20:44:57 -07:00
Stephen Williams
46f551073e
Handle default expressions anywhere in port expression list.
2013-09-20 20:44:57 -07:00
Stephen Williams
d9e1bcf3d0
Handle task arguments with default expressions.
2013-09-20 20:44:57 -07:00
Stephen Williams
13bb927d8a
Handle strings as arguments to automatic functions.
2013-09-20 20:44:56 -07:00
Stephen Williams
16414f921f
Handle default arguments in class new functions.
2013-09-20 20:44:56 -07:00
Stephen Williams
9a116498a2
Handle task/function default expressions in parsing/pform.
...
This gets it to (but not through) the elaborator.
2013-09-20 20:44:56 -07:00
Cary R
d8f945be23
Add support for SV do/while
2013-09-16 20:02:09 -07:00
Stephen Williams
8412d0d55f
Automatic scope are OK in detached threads
...
...assuming certain conditions that should by definition be
true. So this patch amounts to improving an assert condition.
2013-09-09 19:47:22 -07:00
Cary R
07cc18284c
Fix print token/argument mismatches and other cppcheck fixes
2013-09-09 13:34:38 -07:00
Stephen Williams
7d6d93e4e2
Handle synthesis l-values that are part selects.
2013-09-08 18:18:31 -07:00
Stephen Williams
64b2345cf2
eval_as_long takes in const NetExpr arguments.
...
It is not the same as eval_tree, in particular it doesn't
rewrite the expression tree. So the NetExpr argument can
be constant.
2013-08-31 18:48:32 -07:00
Stephen Williams
9b3987bf3c
blif target supports wide LPM_PART_VP devices.
2013-08-31 16:43:37 -07:00