verilog: add sv_maps iterators
[ghdl-vlg.git] / NEWS.md
blob7868b4766c3345a90a9d30e7ae25a40a99cedc5b
1 **3.0-dev** (XXXX-XX-XX)
3 - Handle ieee operators for static expressions.
5 **2.0** (2022-02-28)
7 - Improvements to VHDL 2008 supports and synthesis.
9 **1.0** (2021-02-02)
11 - Plugin for Yosys moved from [tgingold/ghdlsynth-beta](https://github.com/tgingold/ghdlsynth-beta) to [ghdl/ghdl-yosys-plugin](https://github.com/ghdl/ghdl-yosys-plugin).
12 - Python bindings overhauled and renamed to `pyGHDL`. Three modules are included: `libghdl`, `lsp` and `dom`.
13 - The utility scripts in the codebase moved into subdir `scripts`: CI, binding generation, vendors, etc.
14 - Repository [ghdl/ghdl-cosim](https://github.com/ghdl/ghdl-cosim) created. It contains documentation and code examples related to VHPIDIRECT, VPI and SystemC.
15 - Repository [ghdl/extended-tests](https://github.com/ghdl/extended-tests) created for testing `vendors` build scripts.
16 - GitHub Action [ghdl/setup-ghdl-ci](https://github.com/ghdl/setup-ghdl-ci) created, to allow easy installation of nightly GHDL assets in GitHub Actions workflows.
17 - A [wiki](https://github.com/ghdl/ghdl/wiki) was created. The roadmap and ideas for documentation and internship programs were moved there.
18 - Logo updated (org, ghdl/ghdl, ghdl/docker and ghdl/ghdl-cosim).
19 - Assets not added to releases or pre-releases anymore. Users should use package managers or nightly assets (updated after each successful CI run of branch `master`): [nightly](https://github.com/ghdl/ghdl/releases/tag/nightly).
20 - Main documentation site(s) moved to [ghdl.github.io/ghdl](https://ghdl.github.io/ghdl/) and [ghdl.github.io/ghdl-cosim](https://ghdl.github.io/ghdl-cosim/).
22 **0.37** (2020-02-28)
24 - Python binding added
25 - Experimental support of synthesis (either with --synth or with the Yosys plugin)
26 - Fixes and improved support of VHDL 2008
27   - PSL keywords are directly handled in VHDL 2008
28 - Add support for assume.
29 - Last version that supports the Mentor variation of `std_logic_arith`. The Synopsys one is still available.
31 **0.36** (2019-03-03)
33 - A new GitHub organization is created and the main repo is moved from [github.com/tgingold/ghdl](https://github.com/tgingold/ghdl) to [github.com/ghdl/ghdl](https://github.com/ghdl/ghdl). Old refs will continue working, because permanent redirects are set up. However, we suggest every contributor to update the remote URLs in their local clones.
34 - Add support for unbounded arrays.
36 **0.35** (2017-12-14)
38 - Assert and report messages are sent to stdout (#394)
39 - Improve support for unbounded records
40 - Bugs fixed
42 **0.34** (2017-08-15)
44 - Display stack backtraces on errors or assert failures
45 - Compile scripts for vendor libraries (Xilinx, Altera, osvvm, vunit)
46 - Use SSE2 for mcode backend
47 - mcode backend ported to `x86_64`
48 - Support cocotb [potentialventures/cocotb](https://github.com/potentialventures/cocotb)
49 - Main repository is now on github: [github.com/tgingold/ghdl](https://github.com/tgingold/ghdl)
50 - Docs available on rtd: [ghdl.readthedocks.org](https://ghdl.readthedocs.org/en/latest/)
51 - Speed improved.
52 - New option `--psl-report`, to report status of PSL assert and cover.
53 - VHDL2008: support nested package
55 **0.33** (2015-10-04)
57 - Improve support of VHDL2008
58 - Support [OSVVM](http://osvvm.org) 2015
59 - Support VUnit: [LarsAsplund/vunit](https://github.com/LarsAsplund/vunit)
60 - Many bugs fixed
62 **0.32** (2014-11-XX)
64 - Updated to build with `gcc-4.9.2`.
65 - support:
66         - partial of VHDL2008 (available with `--std=08`):
67         - new `std.env` package.
68         - added features in `std.textio` package
69         - all standard IEEE packages.
70         - new operations (relation operators, maximum and minimum, unary reduction operators)
71         - `boolean_vector`, `integer_vector`, `real_vector`.
72         - process(all).
73         - generic packages and interface package declarations.
74         - block comments (aka delimited comments)
75         - implicitely defined to_string functions.
76         - OSVVM 2014_01
77 - Bugs fixed
79 **0.31** (2014-01-XX)
81 - Updated to build with `gcc-4.8.2`.
82 - Supports OSVVM (Open-Source VHDL Verification Methodology) (see [osvvm.org](http://osvvm.org)) in its VHDL-2002 form.
83 - Adds `'image` and `'value` attributes for all required datatypes
84 - Many bugs and support issues fixed.
85 - New home on `https://sourceforge.net/projects/ghdl-updates/`
87 **0.30** (-)
89 Never released, swith to Dunoon Edition.
91 **0.29** (2010-01-09)
93 - Initial implementation of embedded PSL assertions.
94 - Improve:
95         - speed of non-sensitized processes.
96         - speed of string case statement (dichotomy instead of linear search).
97 - bug fix:
98         - and improvements in SDF annotator.
99         - when the bound of a string literal type is not locally static.
100         - gcov crash
102 **0.28** (2009-09-17)
104 - Add `--std=08` to enable VHDL2008 features.
105 - Support all-sensitized processes from VHDL2008.
106 - Documentation typos (thanks to Peter Huewe).
107 - bug fix:
108   - handle `'pos/'leftof/'rightof/'succ/'pred` in concurrent statements.
109   - overloaded resolution functions.
110   - direct drivers elaboration for unconstrained array signals.
111   - many minor bugs.
113 **0.27** (2008-07-01)
115 - Improve SDF annotation (handles much more annotations)
116 - Add `--ieee-asserts=` option to control assert messages from ieee packages.
117 - bug fix:
118   - aliases in port map
119   - crash during elaboration for top entities with ports/generic
120   - crash when string literal in aggregate.
121   - concatenation with an array subtype element.
122   - non-static subtype used by type conversions in associations.
123   - clear timeout in wait for.
124   - minor bugs.
126 **0.26** (2007-04-08)
128 - `GHDL_PREFIX` environment variable overrides default installation prefix.
129 - simulation speed improved with 'direct drivers'.
130 - windows version:
131         - exceptions are caught
132         - use executable path instead of registry for prefix
133 - bug fix:
134         - individual association by expression (was not working)
135         - individual association of string
136         - within windows code generator
137         - [windows] large local variables crashed
138         - crash when overloaded aggregate target.
139         - forbid individual association with open
140         - crash when bad array prefix
141         - correctly extract sensitivity of record aggregate
143 **0.25** (2006-08-11)
145 - VPI functions to schedules values.
146 - `math_real` now works under windows.
147 - documentation updated for windows.
148 - filename/line number displayed for range error during signal update.
149 - bug fix:
150         - ieee math libraries available when `--ieee=synopsys`.
151         - `'image` in package bodies.
152         - scan of fp literals.
153         - interface identifier is checked for conformance rules.
154         - avoid a crash in case of error in configuration specification.
155         - non-static choice in unidim case are now correctly checked.
156         - do not crash in case of bad use of incomplete type.
157         - `'range` are not expressions.
158         - handle file declaration in concurrent procedure calls.
159         - correctly handle static `'image` attribute.
160         - handle in-conversion for signal associated with an expression.
161         - emit an error when a function tries to exit without a return.
163 **0.24** (2006-06-25)
165 - Handle enums with more than 256 elements.
166 - Relax expr static rules in 93c to analyze Xilinx core lib from 8.1
167 - man page, `ghdl.1`, added.
168 - windows installer improved
169 - bug fix:
170         - correctly handle empty file name.
171         - correctly handle unused subprograms of protected types.
172         - avoid a crash if unused library are used.
173         - avoid crashes during error reports.
174         - add a missing case array conversion.
175         - build on `x86_64`.
176         - code generated for conversion after mod/rem (windows version).
177         - `-fexplicit` crashed with `std.standard` functions.
178         - handle recursion of pure/wait checks.
179         - correctly handle error cases of user attributes
180         - time and character read procedure of std.textio.
181         - initialize by value parameters (instead of copy-in).
183 **0.23** (2006-05-16)
185 - bug fix:
186         - handle implicit conversion in resolution functions.
187         - missing implicit conversion added.
188         - avoid a crash in error.
190 **0.22** (2006-03-28)
192 - direntry added in `ghdl.texi`
193 - updated:
194         - Documentation (explain bug in Xilinx unisim library).
195         - to `gcc 4.1`
196         - math_real
197 - bug fix:
198         - avoid crash if type conversion is indexed/sliced
199         - do not allow anymore uncomplete individual association
200         - missing check on array association
201         - check bounds for val attribute on enumerated type
202         - array inequality of locally static expressions evaluated
203         - configuration issue
204         - `--warn-no-vital-generic` is now working
206 **0.21** (2005-12-18)
208 - local optimizations (loops, indexed name).
209 - simulation speed improved by 20% due to processes mngt optimizations.
210 - stack-switching code ported to `x86_64` (`amd64/em64t`).
211 - stack-switching code ported to `ia64`.
212 - `--syn-binding` option extended (see documentation).
213 - bug fix:
214         - line number for some bound violation messages.
215         - improved message error for deferred constants.
216         - file parameter for functions.
217         - universal real divided by integer handled in locally static expr.
218         - `std_ulogic` types and arrays are known by VPI.
219         - missing space added in VCDs for integers.
220         - `CR+LF` is also end of line for `std.textio.readline`.
221         - avoid a crash if parse error on choice.
222         - handle `'image` in nested subprograms.
223         - handle `'image` for floating point types.
224         - do not use varargs C calls.
225         - handle missing `EOL` for `readline`.
226         - for `x86_64`
228 **0.20** (2005-10-15)
230 - stack memory usage improved for shortcurt operations.
231 - gtkwave now displays nice waves for bit and std_ulogic signals.
232 - time unit is displayed in assert/report message.
233 - `-fexplicit` option added.
234 - integers are now written in VCD files.
235 - hash table added for design_units (speed optimization).
236 - range checks slightly optimized.
237 - `--vcdz` run time option added.
238 - improved error message for invalid expressions.
239 - grt now compiles with GNAT-GPL-2005 (use a GNAT bug work-around).
240 - bug fix:
241         - handle more types for `--dump-rti` and `--wave`.
242         - `'last_event` and `'last_active` (bad value returned when no previous event or activity).
243         - `'image` attribute for physical types (was bad unit).
244         - `'image` attribute for locally static integers.
245         - for reading `.ghw` files.
246         - in `--xref`.
248 **0.19** (2005-08-17)
250 - `ADAFLAGS` has been replaced by `GHDL_ADAFLAGS` to ease compilation.
251 - `ieee.math_real` and `ieee.math_complex` added (only partially, based on a
252   draft).
253 - current time is printed with assert/report messages.
254 - stack switch assembly code ported to powerpc-linux.
255 - documentation on how to use grt from Ada added.
256 - allow indexes of indexed names to be non-static in case statements (93c only)
257   (this is not standard, but I can't see why it should be required).
258 - unbound ports of entities are now reported with `--warn-binding`.
259 - some error or warning messages improved.
260 - `--wave` option added to dump waveforms (using ghw file format).
261 - bug fix:
262         - internal error (missing close_temp for implicit read)
263         - `--xref-html`: avoid to reanalyze unit.
264         - handle implicit conversion for `'image`.
265         - aggregate assigned to an aggregate: avoid crash.
266         - array attributes on unconstrained array: avoid crash.
267         - `'last_event` returns `time'high` if no event.
268         - `'last_event` on array (uninitialized variable).
269         - allow calling `rising_edge` with a port of mode buffer.
270         - allow aliases of unconstrained arrays.
271         - bound error on aggregate with an unused other association.
272         - catch indexed/sliced component (was crashing).
273         - catch index/slice of a type conversion (was crashing).
274         - handle bad component specification in conf (was crashing).
275         - missing ports in component (was crashing).
276         - component configurations were dicarded by bug in some cases.
277         - no more unused warnings for subprograms in architectures (they may be used in configuration).
278         - allow conversion in component configuration.
279         - conversion in associations with not statically defined array signals.
281 **0.18** (2005-03-12)
283 - Keep last line number to speed-up line number look-up (improvement).
284 - `--warn-default-binding` added, `--warn-binding` rewritten.
285 - `'value` implemented for integer numbers.
286 - bug fix:
287         - in `textio.read` for time.
288         - `file_close` does not crash if file was already closed.
289         - spurious unused warnings for protected types.
290         - allow subtype names in slice during sensitivity extraction.
291         - correctly set the default value of collapsed ports.
292         - handling of stack2 (aka large concatenation bug).
294 **0.17** (2005-02-26)
296 - command `--elab-run` added.
297 - Code generation for aggregate improved.
298 - Library name of option `--work=` is checked.
299 - `--no-run` option added to prevent simulation (may be used to disp tree only).
300 - disp signal name in error when multiple sources drive an unresolved signal.
301 - `-m`/`--gen-makefile` now handle several libraries.
302 - dependences are not stored anymore in libraries (shorter/faster).
303 - mentor version of ieee library is now provided.
304 - handling of universal types is more consistent with LRM (almost corner cases).
305 - iterator and indexes whose bounds were universal expressions are now of type integer or erroneous, according to the weird LRM rules.
306 - handle selected name as entity name in architecture/configuration.
307 - bug fix:
308         - port map with expression (corner case ?).
309         - forbid empty extended identifiers.
310         - enumeration literal xrefs.
311         - non-object name in sensitivity list crashed.
312         - correctly handle alias of signals in processes.
314 **0.16** (2005-01-02)
316 - `std.textio`: readline has no limits on line length.
317 - command `-r` (run) added.
318 - bug fix:
319         - better handling of errors in type conversion.
320         - few uninitialized variables in ghdl itself caught.
321         - parse error: `begin` in aggregates.
322         - bad `unused subprogram` warnings.
324 **0.15** (2004-10-13)
326 - library file format modified to handle relative pathes.
327 - install fixed to use relative pathes.
328 - internal change: ortho API modified (constant are not anymore expressions).
330 **0.14** (2004-08-29)
332 - pretty printing in HTML command, `--pp-html`, added.
333 - xref generation in HTML command, `--xref-html`, added.
334 - syntax checking command, `-s`, added.
335 - Code generation in whole command, `-c files -e unit`, added.
336 - warns for unused subprograms.
337 - bug box added to help bug reports.
338 - `-s` (syntax check) command added.
339 - Missing grt subprogram to close non-text file added.
340 - maximum line length of `std.textio.readline` extended to 512 characters.
341 - `std.textio.readline` assert error on truncated lines.
342 - Handle P32 and P64 in `--trace-signals`
343 - sequentials statements are not canonicalized (should be faster).
344 - `DESTDIR` added in Makefile to ease packaging.
345 - for `-m` command, re-parse modified files of the work library.
346 - Many checks added on interfaces.
347 - Many checks added on associations, better handling of conversions.
348 - Checks for unassociated entity ports at elaboration.
349 - bug fix:
350         - resolution function can be an expanded name.
351         - missing type check in a corner case.
352         - emit an error when `EOF` is reached while a text file is read.
353         - `std.textio.read` for negative number.
354         - `std.textio.read` [integer]: correctly handle end of line.
355         - parameters of protected type: handled and checked.
356         - `gen_tree.c` modified to work with sparc.
358 **0.13** (2004-06-26)
360 - support of 64bits integers and 32bits time (not yet user available)
361 - handle `'high` and `'low` attributes on non-locally static types and subtypes.
362 - Many warning switches added (to control output of warnings).
363 - `--gen-makefile` mode added to ghdl (to generate a Makefile)
364 - alias identifier restrictions of vhdl-02 implemented.
365 - declarative region for architecture from vhdl-02 implemented.
366 - buffer port association rules of vhdl-02 implemented.
367 - method operator restrictions of vhdl-02 implemented.
368 - `'driving` and `'driving_value` implemented.
369 - run-time bound check error message now contains file name and line number.
370 - strings are not stored anymore with the identifiers.
371 - parser does not back-track anymore.
372 - bug fix:
373         - name clash in generated `.s` files (arch and port/generic names).
374         - implicit conversion of signal parameters.
375         - handle locally static type conversion of arrays.
376         - stabilize during elaboration of an unconstrained signal.
377         - revert previous `vhdl87` conf spec bug fix, according to INT-1991 issue 27.
378         - multiple visibility of declarations (eg: direct and alias).
379         - names attribute of non-object aliases.
381 **0.12** (2004-05-30)
383 - simulation speed improved (2 fold) due to reduced activity optimization.
384 - type conversion handled in associations
385 - make mode of ghdl improved.
386 - bug fix:
387         - attribute specification
388         - allow discrete type marks in choices
389         - handling of generate statement for VCD
390         - allow dereference in variable associations
391         - allow function conversion in block port map
392         - vhdl87: apply configuration specification inside generate stmts.
393         - catch non-passive concurrent procedure calls in entity.
394         - association of an unconstrained port with an expression.
395         - declaring an uncons. array subtype of an uncons. array subtype.
397 **0.11.1** (2004-04-24)
399 - bug fix:
400         - corner case of signal not updated
401         - handle `'stable`, `'quiet` with a paramater > 0
402         - typos (missing `+ `) in sparc.S
404 **0.11** (2004-04-17)
406 - signal collapsing improved.
407 - simulation kernel speed improved (maybe 5x faster).
408 - `--lines` mode of ghdldrv added.
409 - boolean signals are now dumped in vcd files.
410 - bug fix:
411         - in code generation for an aggregate.
412         - run-time check of ascending order of projected transactions.
413         - empty sequence of stmts in case alternatives (unidim array).
414         - evaluation of locally static 'range attribute.
415         - implicit conversion in formal function convertor.
416         - return type is a type mark.
418 **0.10** (2004-02-28)
420 - architecture with many instances can be compiled with less memory.
421 - `--stats` option added to the simulator, to evaluate performance.
422 - signals are now collapsed between instances, if possible.
423 - simulation is about 3x faster.
424 - sparc port available (source only).
425 - more checks added for attribute specification.
426 - chop command added (split files by design unit).
427 - bug fix:
428         - absolute source files.
429         - empty sequence of statements in case alternatives.
431 **0.9** (2004-02-01)
433 - VITAL level 0 restrictions checks added.
434 - VITAL 2000 packages provided.
435 - run-time information (such as signal names) rewritten.
436 - SDF support added (partial and experimental).
437 - bug fix:
438         - allow elaboration even if no package body if the package is present in a file but not used by the hierarchy.
439         - `delay_length` range is pre-elaborated (was not in v93).
440         - crashed when a design unit is not found at elaboration.
441         - allow association of `'stable`, `'quiet`... with signal interfaces.
442         - concurrent procedure call creates a non-sensitized process.
443         - effective value of non-scalar resolved signal might not be set.
445 **0.8** (2003-11-05)
447 - protected types (from 1076a/1076-2000) implemented.
448 - file declarations are finalized in subprograms.
449 - an exit call-back has been added in the run-time library.
450 - internal modifications (nodes are stored in a table).
451 - name of generated executable can be set with `-o` option.
452 - IVI (ivi.sourceforge.org) support through a few VPI subprograms.
453 - pure and wait checks added.
454 - out ports are correctly dumped in VCD files.
455 - bug fix:
456         - signal declaration not allowed in processes.
457         - several bugs fixed.
459 **0.7** (2003-08-02)
461 - layout of internal nodes improved.
462 - incremental binding (vhdl93).
463 - association of in port with expressions (vhdl93).
464 - `--disp-time` option added.
465 - make mode (`ghdl -m`) rewritten.
466 - `'simple_name`, `'path_name` and `'instance_name` added (vhdl93).
467 - bug fix:
468         - instantiation added in hierarchy.
469         - individual association of subelements by expression.
470         - `--stop-delta` option is working.
471         - correctly handle operators names at function call.
472         - several small bugs fixed.
474 **0.6** (2003-06-09)
476 - internal modifications (single linked list used instead of arrays).
477 - Mentor version of std_logic_arith is provided.
478 - postponed handled (vhdl 93).
479 - declarations allowed in a generate statement (vhdl 93).
480 - non object aliases handled (vhdl93).
481 - signatures handled (vhdl93).
482 - bug fix:
483         - `xnor` on `bit` and `boolean` is working.
484         - `selected_name` list in use clauses.
485         - many other small bug fixes.
487 **0.5** (2003-05-10)
489 - foreign attribute handled.  You can now call subprograms defined in a foreign
490   language (such as C or Ada).
491 - ghdl entry point added: you can start the VHDL simulation from your own
492   program.
493 - bug fix:
494         - triple use.
495         - incomplete types
497 **0.4.1** (2003-04-07)
499 - bug fix: in the vcd output.
501 **0.4** (2003-04-02)
503 - `libgrt` does not depend on GNAT library anymore.
504   Installation requirements are reduced.
505 - `'delayed` attribute implemented.
506 - `'transaction` attribute implemented.
507 - unaffected (from vhdl-93) implemented.
508 - ghdl action `--disp-standard` prints the std.standard package.
509 - exponentiation operator, `**`, implemented for all integer and floating
510   point types.
511 - many other small bug fixes.
512 - bug fix: subprogram interfaces are now elaborated.