-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathNEWS
1746 lines (1561 loc) · 119 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Covered-Related NEWS
====================
* 3/24/2010
Stable release covered-0.7.8 made. This release is primarily a bug fix release, but it does contain a few new
minor features and Verilog language enhancements. Here are the details:
- Fixed bug 2912587. Using the -f option with the merge command was causing errors.
- Fixed bug 2912679. If the GUI was invoked (i.e., covered report -view) and an error in command-line parsing
occurred, Covered segfaulted.
- Added ability to specify the CDD on the report command-line when starting the GUI (i.e., covered report -view foobar.cdd)
which will automatically load the specified CDD files into the GUI on startup. Feature request 2912698.
- Fixed bug 2925756. An expression surrounded by the parenthesis could cause a segmentation fault when parsing.
- Support has been added for NC-Verilog VPI usage.
- Fixed bug 2926579. Changing from a known value to an X value should cause no change in toggle coverage;
however, when we transition back to a known value and it differs from the previously known value, we record
a toggle coverage change. Example: 0 -> X -> 0 (no change in coverage), 0 -> X -> 1 (change in coverage).
- Fixed bug 2927285. Segmentation faults could occur when excluding FSM and combinational logic cases.
- Added support for the $clog system function call.
- Fixed bug 2929948. Assignments to a concatentation of signals could lead to segmentation fault.
- Fixed issue in the LXT2 reader that resulted in a memory leak.
- Fixed bug 2933112. Added full support for out-of-bounds assignment.
- Added new -T global option that provides a "terse" output which outputs the Covered header and warnings/errors
only (less output than using none of the global output verbosity options). Feature request 2952492.
- Fixed bug 2960887. Adds support for creating a definition which contains no user value (i.e., `define FOO).
Covered was incorrectly assigning a value of 1 to these types of defines.
- Fixed bug 2958529. Zero width replications are now supported by Covered (i.e., {0{a & b}})
- Fixed bug 2974860. Fixed issue with FSM state input/output variables being output to an ASCII report file
correctly.
- Added ability to allow the "trans" parameter to Covered FSM attributes to contain additional characters
after it. Some simulators don't like Verilog attributes having the same name for multiple parameters.
Feature request 2976039.
- User guide has been updated per these changes.
* 8/2/2009
Development release covered-20090802 made. This development release adds several performance enhancements and bug
fixes to the new inlined code coverage flow, including the following:
- Adding support for $random and $urandom system calls to inlined coverage.
- Includes all fixes made to the stable 0.7.5 release.
- Adding support for $value$plusargs system calls to inlined coverage.
- Fixing issue with generated IF statements.
- Added user documentation for inlined coverage flow and score options.
- Fixing issue with generated code interrupting comma-separated assign statements.
- Performed code simplification and performance improvement with the way statements were handled internally.
- Removed unnecessary calls to simulation functions when using inlined code coverage (this added a performance
penalty).
- Improved performance of inlined code generator for sizing generated signals.
- Fixed memory indexing issues related to memory coverage.
- Added support for static function and static ternary operators for inlined code coverage.
- Added code to differentiate functions used statically and not to do the right thing for inlined code coverage
accumulation.
- Added vcd_diff script which checks the dumpfile output from non-inlined and inlined design files to verify that the
inlined code generator does not change the result. This check is now a part of all inlined regression runs.
- Made several performance improvements to the VCD file reader. The reader is now 10-20% faster.
- Added support for Verilator regressions runs and ported a couple of diagnostics to Verilator format.
- Adding check to make sure that a CDD file without inlined mode set that reads a VCD file containing inlined coverage
data emits an error to the user and exits gracefully.
- Added -inline-comb-depth score option to allow the user to specify a shallower combinational coverage depth
to be generated -- improving inlined simulation and coverage performance.
- For Verilator runs, inserted pragmas around intermediate combinational logic expression signals to exclude them
from being output to VCD files. This improves simulation and coverage performance for Verilator runs (other simulators
that have a VPI that automatically remove these signals from generating change callbacks).
- Performing code replace of some actual code with pre-calculated intermediate expression values for further simulation
performance improvements.
- Added "e" option to -inline-metrics which allows event coverage to be turned on/off independently of other
combinational logic coverage. This allows further simulation and coverage performance improvements (especially for
Verilator runs).
- Added optimization that causes code generation to be skipped for assertion files when assertion coverage is not required.
- Full regressions now runs cleanly with all code changes.
* 7/5/2009
Development release covered-20090705 made. This development branch adds support for a new type of code coverage scoring.
Code coverage information is embedded (inlined) in a copy of the original design files. These instrumented files can
then be simulated and either a dumpfile can be generated and run through Covered's score command or Covered can run in VPI
mode with the simulator to generate a scored CDD file.
The advantage to running in this mode of operation will be more accurate coverage of the design based on the simulator being
used and a lack of "resimulation" to be done by Covered. Eventually, this mode of operation will be Covered's only method
of code coverage accumulation, but this development release merely adds this as another way to run Covered (i.e., all previous
code coverage methods work as they have). Use the new -inline (and optionally -inline-metrics) score options to cause the
instrumented files to be output in a directory called "covered/verilog" in the directory where the Covered score command is
run (see user documentation for details).
This feature is fully passing in Covered's regression but should be considered in an alpha state at this point. In the next
development release, I am planning on adding some performance improvements for this feature, but please feel free to submit
bug reports about anything related to this new feature.
Here's a list of a few other features added:
- Integrated all bug fixes found in the stable release of Covered.
- Added regression support for the Veriwell simulator
- Added initial regression support for the Vcomp simulator (however, vcomp doesn't seem to be working well for me).
- Added documentation to user guide for the new inlined code coverage options and usage flow
- Verified that all code is splint clean
- Added support for ternary operators in static expression locations
* 5/7/2009
Stable release covered-0.7.1 made. This is a bug fix release only. Here are the details:
- Fixed bug 2782473. CDD files being merged from different testbenches but with similar leading hierarchy
(but different top-level modules) which would lead to internal assertion errors.
- Fixed bug 2785453. Wires declared in generated named scopes were not handled correctly by Covered in VPI mode of operation,
leading to inaccurate coverage information.
- Fixed bug 2786986. An always block with a part select in the sensitivity list was triggering on the entire signal change
rather than the specific part select, leading to a potential degradation in performance and inaccuracy in coverage information.
- Allow time variable types to be included for coverage.
- Fixing permission issue with the install-sh script that some people would get after first downloading and installing.
- Updated README and INSTALL files to be more accurate.
- Fixed coverage accuracy issue for code that uses variable part selects in LHS of expressions.
* 4/26/2009
Stable release covered-0.7 made. This description contains only the changes made between the 11/19/2008 and this release.
This is primarily a bug fix period. Here are the details:
- Added many new diagnostics to help with C source code coverage.
- Fixed memory leak issue when profiling output is directed to unwrittable file.
- Fixed bug 2423290. Arithmetic right shift operator was not acting like a logical right shift operator when
the left operand was an unsigned value.
- Fixed bug 2471776. The $time system call was not returning the correct value if the timescale was not 1-to-1.
- Fixed bug 2482797. If an unpacked dimension is accessed for a memory read, memory read coverage is not output
correctly (not reported as being read).
- Fixed bug 2446877. Big endian signals were not being handled correctly from the VCD file.
- Fixed bug 2502095. Named blocks within generate statements generating wrong code.
- Adding support for line order reporting when included files contain coverage information.
- Fixed bug 2562345. Timescales were not being handled properly in a DOS-formatted file.
- Fixing issue where text following an `ifdef, `ifndef and `elsif was being parsed incorrectly.
- Fixed bug 2565447. Added support for LAND and LOR "static" operators to allow these operator types to be used
in generate blocks.
- Fixed bug 2565347. Added missing support for $signed and $unsigned system function operators.
- Fixed issue where a user-defined system call is found in the logic and Covered issues an error message.
- Fixed bug 2565259. Fixed a bug with preprocessor's handling of `include filenames.
- Fixed bug 2565405. Signed input/output signals were not parsed correctly.
- Fixed bug 2422415. Fixed simulation/coverage issue with comma-separated case items.
- Fixed bug 2614516. Added support for != operator in "static" expressions.
- Fixed bug with obfuscation global option.
- Fixed bug which produced segmentation fault when the $Id$ keyword is found in a Verilog source file.
- Fixed bug 2617354. Fixed parameter handling in generate blocks.
- Added capability to ignore race condition checking on a per-module basis. Enhanced the -rI option to allow an optional
module name (i.e., "-rI=foobar") to be specified to achieve this functionality.
- Updated user documentation
- Cleaned up all splint warnings
- Fixed bug 2722062. When an error is found within a Covered command run, Covered will now return a value of 1 (EXIT_FAILURE)
instead of a value of 0.
- Fixed bug 1899674. When the score command is run to perform VCD scoring (after the CDD file was created with the score command)
and the CDD file was found to be empty, an internal assertion error was output instead of a readable user error message.
- Fixed bug 2779785. Segmentation fault occurred when reporting certain Verilog styles (error in code generator).
- Fixed bug 2781023. Segmentation fault occurred when reporting certain Verilog styles (error in combinational logic
underline functionality).
- Performed various non-functional code cleanup.
* 11/19/2008
Development release covered-20081119 made. This development release adds support for more complex CDD merging (previously
only CDDs with the same DUT hierarchy could be merged). Now different (including overlapping) blocks from different
parts of the design can be merged together as well as shared modules from different designs. Includes a few bug fixes and
documentation updates for the merge command. The following is a list of the changes that went into this development release.
- Added new merge capabilities that allow two or more CDD files with different top-most scored modules to be merged
together. Also added ability to merge two similar modules from different designs.
- Fixed bug 2223054. Remove false positive combinational logic cases when non-zero values are within concatentations ({})
and conditional expressions (?:).
- Fixed bug 2253402. Removed help_wrapper.tcl sourcing in Tcl/Tk scripts (this file was removed in the covered-20081030
development release).
- Fixed bug 2311710. Segfault would occur if a combinational logic expression was excluded/included via the GUI when
in instance reporting mode.
- Updated merge command documentation to describe new merging capabilities in User's Guide.
- Enhanced the configuration scripts to work with new versions of Icarus Verilog (include files for IV moved to a new
location). These changes should be backward compatible for older versions of IV.
- Added several new diagnostics to regression suite to verify new functionality.
Note that CDD files generated with this version of Covered will not be backwards compatible with previous versions of
Covered. This development release marks the last of the feature additions that will go into the upcoming 0.7 stable release
of Covered. This branch is now in feature freeze and only bug fixes, regression updates and documentation changes will go
into this branch. You may consider this development release to be a beta version of the 0.7 stable release due to be released
later this year.
* 10/30/2008
Development release covered-20081030 made. This development release is primarily a language support release in that
now Covered handles real numbers and has support for several built-in system task/function calls. A few bug fixes
have also been included along with documentation updates. Here's the rundown of the changes:
- Fixed bug 2158297. When initialized registers are output in a coverage report, a segmentation fault occurred.
- Fixed bug 2158626. Initialized registers could report missing toggle coverage information in several instances.
- Removed register initialization statements from line coverage.
- Added full support for real numbers (real, realtime and shortreal) as both mathematical values as well as delay values.
- Added support for runtime plus arguments to score command (also added the ability to specify plusargs to the New CDD
creation wizard in the GUI).
- Added functional support for the following built-in system task/function calls: $bitstoreal, $bitstoshortreal, $rtoi,
$test$plusargs, $itor, $value$plusargs, $shortrealtobits, $realtobits
- Added the ability to allow the following built-in system task/function calls such that logic blocks containing these
will now be able to be considered for coverage: $swrite, $dumpports, $ferror, $swriteb, $dumpportsall, $fflush, $swriteh,
$dumpportsoff, $fgetc, $swriteo, $dumpportson, $fgets, $dumpportslimit, $ungetc, $dumpportsflush
- Outputs an error if the value specified for the -P option to the score command is specified incorrectly.
- Fixed timescale issues
- Fixing time 0 problems for VPI mode of operation
- Fixed toggle coverage results for automatic functions/tasks.
- Updated User Guide per these changes
- Enhanced regression suite to verify new functionality.
* 10/07/2008
Development release covered-20081006 made. This development release is both a feature and a bug fix release. The main
feature additions include a new "exclude" command which allows the user to exclude coverage points from the command-line
and provide (optional) reasons for the exclusion which are saved in the CDD file and can be output in reports. Exclusion
reasons can also be specified now using the GUI. Additionally, support for the $time, $random, $urandom, $urandom_range
and $srandom system functions are provided along with handling of several system tasks (see User's Guide for a detailed
list of supported system tasks/functions) such that logic blocks containing these will not be automatically excluded from
coverage consideration. The following is a detailed list of the changes that has gone into this development release of
Covered.
- Added a new "exclude" command which allows coverage points in the design to be excluded (with an optional exclusion
reason provided)/included. You can also display the current exclusion status and reason for a given coverage point using
this command.
- Added a new -x option to the report command that will display the exclusion ID for the various coverage points that
is used for excluding/including coverage points via the new "exclude" command.
- Added a new -e option to the report command that will display excluded coverage points and their reasons for exclusion
to the report file.
- Added ability in GUI to create generic exclusion reasons in the Preferences window which can be used when providing
exclusion reasons in the GUI for common exclusions.
- Added ability in GUI to provide exclusion reasons when excluding a coverage point.
- Fixing issue with the use of the kfmclient for help viewing (KDE).
- Fixed bug 2095796. When the root expression in the verbose combinational logic window is excluded, the highlight colors
were not changing to indicate that the line is "covered".
- Fixed bug 2095799. When a memory element was excluded, the colors in the verbose memory window were not adjusted to indicate
that the memory was "covered".
- Updated covered.spec (RPM build file) to match current state of Covered.
- Fixed bug 2104947. Missed indexed memory operations are not output in the report file correctly.
- Fixed bug 2104924. Indexed memory operations were not emitting correct coverage information in combinational logic coverage.
- Fixed bug 2106313. The !== operation result was not correct.
- Cleaned up splint warnings in source code.
- Fixed bug 2112858. "Multi-tiered" merging was not reporting the correct contributing coverage files.
- Fixed bug 2112509. Support added to merge files with the same basename but different directories (relative pathnames are used).
- Fixed bug 2112613. Multi-expressions that were marked to be excluded were output in the report files as both excluded
and uncovered.
- Fixed memory issues with obfuscation code and made minor performance enhancements with this functionality.
- Fixing issue with rank command when an invalid option was specified (output incorrect output message previously).
- Added module version parsing support to parser. If this information is specified in an $Id..$ string within a comment,
it is extracted and saved in the CDD.
- Fixed bug 2122019. Added documentation for the -m option to the score command.
- Added new -er option to the merge command which specifies how to resolve exclusion reasons that are specified for the
same coverage point in two CDD files that are being merged. See user guide for more information.
- Added new "Merging" preference pane to GUI that allows the user to specify how the GUI will resolve exclusion reasons when
reading and merging in CDD files (much like the -er option to the merge command).
- Fixed bug 2123730. Error in parsing unsized constants (i.e., 'h0) in some instances (ex. "assign a = #1 'h0;").
- Fixed bug 2123300. Toggle and FSM coverage points are not properly merged.
- Fixed bug 2124635. If the current GUI metric state is set to "Toggle", no opened files exist and a preference change causes
an error to occur stating that the current functional unit could not be found.
- Fixed bug 2125451. Fixed VPI usage errors.
- Fixed bug 2127185. An "if" statement with an empty true scope caused a segmentation fault.
- Fixed bug 2127678. Fixed assertion error in db_close function when LXT2-style dump scoring.
- Fixed bug 2127687. Fixed memory leaks when using the LXT2-style dump scoring.
- Fixed bug 2129623. X values between 0/1 values should not impede on toggle coverage (i.e., 0->X->1 should be considered as a
toggle from 0->1 while 0->X->0 is treated as no toggle change (conservative approach)).
- Fixed bug 2133113. Error message displayed when Konqueror browser is used to view help information.
- Created new banner graphic for Covered and integrated this into the GUI.
- Fixed bug 2136474. An internal Covered error was displayed when forever blocks were used within fork..join.
- Fixed bug 2127674. LXT-style dump information in documentation should have been specified as LXT2 (LXT not supported).
- Fixed bug 2127694. Task/function port handling caused errors in some instances.
- Adding functional support for the $time, $random, $urandom, $urandom_range and $srandom system functions.
- Adding coverage handling support for $dumpall, $dumpfile, $dumpflush, $dumplimit, $dumpvars, $dumpoff, $dumpon, $fdisplay,
$fmonitor, $fstrobe, $fwrite, $history, $key, $list, $log, $monitor, $monitoroff, $monitoron, $nokey, $nolog, $printtimescale,
$showscopes, $showvariables, $showvars, $strobe, $timeformat, $write, and $fclose.
- Added -conservative option to the score command to force Covered's parser to remove logic blocks from coverage consideration
if they contain code that could potentially lead to coverage inaccuracies.
- Added -Wignore option to the score command to suppress warning information from output.
- Fixed bug 2124669. When multiple files are opened simultaneously in the GUI, no design output was displayed in the GUI.
- Fixed bug 2131171. If a block is removed from coverage consideration, no warning message was output to indicate that this
was being done and why.
- Added -dumpvars option to the score command which will generate a top-level module that will contain the necessary $dumpfile
and $dumpvars calls to most effeciently gain coverage for a design that is being scored via a VCD/LXT2 dumpfile. See
the User's Guide for more information.
- Added the support for the -dumpvars option to the GUI new CDD creation wizard.
- Deprecated the -vpi_ts option to the score command. This option is now called -top_ts and can be used with either the
-vpi or -dumpvars options.
- Added lots of new diagnostics to the regression suite to verify new functionality and to improve code coverage in
Covered's source code.
- Updated necessary documentation in User's Guide and manpage.
Note that the CDD version numbers have changed in this release, making them incompatible with CDD files created from older
versions of Covered.
* 8/26/2008
Development release covered-20080826 made. This development release contains several new features, bug fixes, GUI
enhancements and additions, documentation overhaul and testsuite enhancements. One major feature is the new "rank"
command which allows you to specify multiple CDD files to it and it will select an "optimal" subset of CDD files
needed to achieve the same amount of coverage that all of the files together provide, ranked in the order that these
CDD files should be run in simulation to achieve the most coverage in the fastest amount of time. A big thanks to
Ed Spittles (ed.spittles@gmail.com) for his recommendation and insight for this feature. I think you'll like what
you see as the time for a new stable release draws nearer (I'm planning on an end-of-the-year release date for the new
0.7 stable release). As you can see, Covered development has been very busy since the last development release.
Please give this a try and report those bugs! Here's a list of the changes going into this work:
- Fixed bug 1980954. Single-bit expression elaboration could lead to segfault.
- Fixed bug 1981073. Parameterized port specified twice (once with port direction, once with type specification)
lead to a memory leak.
- Fixed bug 1982530. The empty string "" was not being handled correctly, leading to a segfault.
- Added full support for the use of NULL statements ";"
- Added configuration checks for the lex (flex) and yacc (bison) code generators.
- Added many new diagnostics to cover holes in the regression suite as found by performing C source code coverage.
- Added a new "rank" command (there are now four main commands to Covered) which allows multiple CDD files to be
ranked in terms of coverage gained. Generates a report specifying its results and correlating coverage statistics.
- Has the ability to show which CDD files are unnecessary in terms of adding new coverage information. This
reduction capability allows users to reduce the size (runtime) of their regressions.
- Ranks the "needed" list of CDD files in the order that their simulations should be run (in terms of regression).
This information can be useful for creating "quick" regressions that need to hit as much logic as possible (but
not necessarily all) in a relatively short period of time for the purposes of design change confidence.
- Has the ability to allow user's to specify a list of CDD files that MUST be included in the final list of CDDs
to run.
- Added -f options to all of the commands (previously, only the score command had this option) which allows a file
to be specified containing more command-line options.
- Fixed some issues pertaining to -m32 compiler option support (on 64-bit systems).
- Fixed bug 1986510. The compiler error message "lxt2_read.c:1394: error: extended registers have no high halves"
when compiling with the -O3 option to the 4.1.x (and later) GCC compilers.
- Added ability to create/run regression tests using a perl script (rather than only via Make rules).
- Fixed segmentation fault when the global -D option was specified and the input CDD file was empty.
- Fixed bug 1997423. If a fully covered signal was output in toggle coverage when the -c option is specified to
the report command, the signal was not being output.
- Cleaned up all -Wall GCC warning messages.
- Fixed bug 1994896. Array overflow condition in new vector code causing segfaults.
- Optimized --enable-debug enabled code (runs almost as fast now as without the --enable-debug mode).
- Reduced the number of files in the regression directories.
- Fixed bug 2000732. Valgrind reported error in new vector code.
- Fixed memory leak issue for command option files that contain environment variable references that are not set
in the environment.
- Fixed bug 2001894.
- Fixing splint and GCC -Wextra warnings/errors.
- Added -m option to the score command which allows the user to specify a message to be associated with a created
CDD file (the contents of this message can be most anything -- the information is currently not being used by
Covered but may in the future).
- Added -d and -ext options to the merge command (these options exist in the rank command as well) to allow the
user to specify a directory and extension to use for finding CDD files to merge.
- Fixed CDD file format to remove memory allocation errors when many CDD files are merged into a single CDD file.
- Fixed bug 2054686. Toggle, memory and combinational logic coverage points within an unnamed block were not being
reported in the GUI and ASCII reports.
- GUI changes
- Refreshed the look of the GUI, replacing many widgets with better/newer widgets. The GUI is now reliant on
Tcl/Tk versions of 8.4 (preferable 8.5) and newer (it used to be backward compatible to 8.3).
- Replaced most of the listbox widgets with the new tablelist widget (this new widget needs to be downloaded and
installed in the user's Tk library prior to using Covered's GUI).
- Added a "general" pane to the preferences window that allows the user to modify general components of the GUI.
- Added a starting "wizard" window that pops up on startup to allow the user to quickly do various tasks. This
window can be turned off via a checkbutton in its window and/or the general preferences pane.
- Added the ability to create new CDD files from the GUI (rather than having to use the command-line score
command) via a new "New CDD Creation" wizard accessible from the File > Generate menu (or from the new
wizard window).
- Ability to create a score command option file from the GUI after options have been selected (this file can
be loaded by later references to the New CDD Creation wizard and/or the -f option to the score command.
- Added the ability to rank two or more CDD files from the GUI (rather than having to use the new command-line
rank command) via a new "Rank CDDs" wizard accessible from the File > Generate menu (or from the new wizard
window).
- Ability to create a rank command option file from the GUI after options have been selected (this file can
be loaded by later references to the Rank CDDs wizard and/or the -f option to the rank command.
- Ability to use currently loaded CDD files in the GUI to the rank list.
- Includes the ability to view this generated report file directly in the GUI via a new file viewer window.
- Reworked the entire ASCII report generation functionality to work as a wizard window (like the New CDD and Rank CDDs
wizards). Removed "ASCII Report Options" pane from the preferences panel. This feature is accessible via
the File > Generate menu option.
- Ability to create a report command option file from the GUI after options have been selected (this file can
be loaded by later references to the ASCII Report Generation wizard and/or the new -f option to the report
command.
- Added ability to view this file information directly in the GUI via a new file viewer window.
- Fixing memory errors when Tcl/Tk script fails/errors.
- Fixed bug 1989398. Toggle coverage results were not being
- Added support for tooltips to many of Covered's widgets. Tooltips can be turned on/off in the preferences
window.
- Added ability for GUI to remember window placements, tablelist column sizes/positions/states and other miscellaneous
state information while it is being used and, optionally, between application uses. The ability to remember
this information between application runs is configurable in the preferences window.
- Added full support for instance-based coverage accumulation in the GUI. The user can now select either mode
in the GUI and get immediate results. Additionally, coverage exclusions are transferable between modes (excluding
a coverage point when in module mode will exclude all instances, but excluding a coverage point in an instance will
only exclude the module coverage information if all instances of that module are excluded).
- Updated the Next (-->) and Previous (<--) buttons in all windows to use new graphical buttons.
- Updated the search widgets to use a more graphical, modern approach.
- Fixed bug 2054689. In verbose combinational logic coverage window, when expression was excluded, the highlighted logic
did not change to hit colors.
- Fixed bug 2060873. Excluded subexpression was not outputting its coverage information in the lower window when later
selected.
- Fixed other various memory leak bugs in GUI.
- Switched user guide and GUI documentation from HTML and HTML help formats, respectively, to a single, unified document
in DocBook format. This ties all of Covered user documentation to a single set of source files for easier maintenance.
Removed support for HelpSystem in GUI.
* 5/30/2008
Development release covered-20080530 made. This development release is primarily a scoring optimization
release. The structures used for vectors was completely reconstructed to achieve 2-3x performance improvement
over the last development release. I am now seeing scoring runtimes that almost match those of Cver. A few
bugs were also fixed in this release. The following is a list of these changes.
- Fixed bug 1950946. If a value was supplied to the global -P option, the command-line parser got
confused and skipped the next option/command on the line.
- Fixing various memory deallocation issues when user errors are reported.
- Rewrote vector and expression operation functions to make use of more efficient coverage calculations.
- Coded vector structure to use unsigned longs to make best use of performance optimizations on current machines.
Added capability to vector read functions to be able to translate CDD files written by a 32-bit machine to 64-bit
format and vice-versa.
- Rewrote FSM arc structure and functionality to improve performance of FSM coverage calculations. The new
structure also allows the input and output states to be of different bit widths.
- Added several new diagnostics to regression suite to improve Covered's internal code coverage and to verify new
code cases.
- Fixed bug 1966994. Merged coverage files were appending score command-line arguments to the new CDD file which
created memory allocation problems and unnecessarily increased the size of the CDD file.
- Fixed bug 1965927. Multi-line defines were causing problems with line numbers in reports.
- Fixed bug 1979698. Embedded, empty begin..end block causes top-level block to be diregarded from coverage
consideration.
This is a substantial improvement in speed, so please give it a try and please report any bugs that you may find.
* 4/15/2008
Development release covered-20080415 made. This development release contains several code optimizations,
memory leak fixes, and GUI improvements. The following is a list of these changes.
- Bug fixes from 0.6.2 stable release.
- Fixed all memory leak issues with regressions and added code instrumentation and some post-processing
scripts to automatically verify that there are no memory leaks for regression runs.
- Code reduction in parser
- Modified the way that vectors were being assigned to fix memory leak issues with their deallocation.
- Optimized coverage accumulation during scoring in expression functions.
- Optimized unknown and not-zero factoring of vectors to improve scoring speed
- Added new diagnostics to regression suite to verify fix for LHS expression calculation
- Optimized vector operation functionality to improve scoring speed.
- Removed the LAST expression operator type (internally used type that is no longer needed due to the
optimization improvements)
- Updated several components of the GUI, including the module/instance listbox (now contains summary
information including hit, miss, total, hit percent and coverage color in background), removed the
summary window (no longer needed due to module/instance listbox change), substituted home-made
window resizing handles for Tcl/Tk 8.4/.5 panedwindow types, substituted "-->" and "<--" buttons for
graphical buttons to improve look, and several other aesthetic and functional changes.
- Fixed several issues/bugs with GUI.
Of particular note is that the CDD version is now incompatible with other versions of Covered. Also, I am planning
on only supporting the GUI for Tcl/Tk versions of 8.4 or newer (I used to support 8.3 but the Tcl/Tk homepage no
longer offers these older versions and I am taking advantage of some of the newer widgets available in these versions).
The GUI also requires that the tablelist (version 4.8) Tk widget be installed in the auto_path. Additionally,
the GUI documentation is not up-to-date with this release, but will be updated by the next development release.
Give the new performance improvements a try and be sure to check out the improved GUI report analyzer!
I am planning on working on some (hopefully) major improvements in performance to the score command for the
next development release as well as adding full support for instance coverage viewing in the GUI as well as
some advanced coverage merging capabilities that will allow the user to get graded test information as well!
As always, have fun and be sure to log those bugs!
* 3/14/2008
Development release covered-20080314 made. This development release contains a slew of new features,
score optimizations, bug fixes and documentation/regression updates/additions. The following is a list
of these changes.
- Bug fixes from 0.6.1 stable release.
- Added -ef option to score command to allow the user to exclude final blocks from coverage consideration.
- Added -ep option to score command to allow the user to pay attention to inline pragmas which allow the
user to exclude certain code from coverage consideration (more control than other -e? options).
- Fixed bug in toggle reporting where the exclusion property was not being handled correctly.
- Changed metric mode selection in GUI to a tk_optionMenu widget instead of using radio buttons (minimizes
this information in the GUI and makes it somewhat less confusing as to which mode of operation we are in).
- Added metric mode selection widget to summary window to allow the user to navigate all metrics in that
window alone (events are synchronized between the main window and the summary window).
- Fixed several aesthetic issues with the GUI running on Mac OS X.
- Removed exit() calls within the code and replaced them with an exception handling scheme using the
cexcept (http://cexcept.sourceforge.net) project. This allows us to much more cleanly exit in terms of
memory, file streams and temporary files.
- Added support for race condition embedded pragmas to allow the user to skip checking certain blocks of
logic (-rP option to score command).
- Removed for loop control assignments from race condition checking consideration.
- Added support for $finish and $stop system calls. These are handled correctly by the score command and
no longer cause blocks containing them to be excluded from coverage consideration on their merit alone.
- Optimized simulator which will become quite apparent for larger designs.
- Updated user documentation and man pages to match new features.
Please note that CDD files created by this development release will not be backwards compatible with other
releases of Covered -- generate new CDD files for merging/reporting with this version of Covered. Have fun
and let's see those bug reports!
* 3/14/2008
Stable release covered-0.6.1 made. Bug fix release only -- here are the stats:
- Fixed bug 1899711. Making reading from FIFOs allowable instead of just FILEs.
- Fixed bug 1899735. Line coverage does not pay attention to exclusion property in generated reports.
- Fixed bug 1899768. Fixed simulation segfault issue caused by an empty default case of a case statement.
- Fixed bug 1899674. Outputting meaningful error message when a read CDD file is found to be empty.
- Fixed bug 1898164. Fixing background colors of FSM states/arcs when preference colors are changed.
- Fixed bug 1914056. Fixing segmentation fault which occurred if the body of a task is the null statement.
- Updated regression suite per these changes.
* 1/30/2008
Stable release covered-0.6 made. This release has been finally made after almost a year since the last
stable release was made. Many coding improvements have been made for performance optimization and portability.
Better debug features have been added along with a host of bug fixes. Please check out the following list
for a high-level view of what has been added to this release since the last stable release.
- Added support for unnamed scopes and the ability to create variables within these scopes.
- Modified simulator memory handling to optimize performance.
- Added support for a CLI debugging environment when scoring simulations (only available if Covered is built with the --enable-debug option).
- Added accumulated summary coverage information to generated reports for each metric.
- Fixed some compilation warnings dealing with large static values being assigned to unsigned long long variables.
- Added the ability to simulate and get coverage for automatic tasks/functions.
- Added ability to read/write file sizes that extend beyond 2G in size.
- Added support for embedded type information within for loops (i.e., for( int i=0; ... )).
- Started adding const information to function input pointers that will not be modified (small performance enhancement that the compiler can take advantage of).
- Added initial parsing capability for structs/unions.
- Added built-in profiling facility to generate profiling reports of Covered's internal functions (useful for enhancing/fixing performance problems in commands)
- Added several performance enhancements to Covered's score command (achieved 8x speedup in one simulation)
- Added additional build support to get VPI libraries to compile on more architectures.
- Lots of bug fixes.
- Added "Debugging" section to user guide to document the usage of the CLI, verbose debugging output generator and profiler.
- Updated user guide and development documentation
- Enhanced regression suite
* 1/20/2008
Development release covered-20080120 made. This is primarily a bug fix release over the last development
release and also includes some enhancements to the CLI. Additionally, Covered has been run under splint
to remove some potential issues. This release is meant to be a beta testing ground for the upcoming 0.6
stable release as it gets a pre-0.6 release into the hands of the general public. Please report any bugs
found with this release as soon as possible so that I can get a 0.6 stable release available. The
following is a list of changes in this release:
- Fixed code to run splint clean with the -weak option as well as a reduced set of the -standard option
(the shell script in the src directory contains the command-line that was run with splint if you want
to know exactly which checks were performed/not performed with splint).
- Fixed several bugs and potential bugs in code found by the splint utility.
- Added capability of running in VPI mode on Mac OS X (Icarus Verilog works at this point).
- Fixed 'next' command in CLI to work as intended
- Added 'goto' command in CLI to allow the user to jump to a specific timestep
- Added 'expr' command in CLI to allow the user to view a given expression by its Covered ID and its
current state/value.
- Renamed several CLI commands to make them easier to remember and reduces amount of typing required.
- Added status bar for step, next and goto commands in CLI to help the user understand if/when
progress was being made by the simulator.
- Fixed bugs with regards to the '!!' command in CLI (this should now work as intended).
- Fixed bug 1875180 which would lead to incorrect simulation results and would possibly cause a
Covered simulation to go into an "infinite loop".
- Added new diagnostics to regression suite.
- Documentation updates per changes.
* 1/3/2008
Development release covered-20080103 made. This is primarily a bug fix and performance enhancement
release over the last development release of Covered with a few new feature additions.
The following changes are included in this release.
- Added support for embedded type information within for loops (i.e., for( int i=0; ... )).
- Started adding const information to function input pointers that will not be modified (small
performance enhancement that the compiler can take advantage of).
- Added initial parsing capability for structs/unions.
- Updated all trevorw@charter.net e-mail addresses to new phase1geo@gmail.com e-mail address.
- Fixed VCD parsing error (bug 1832592).
- Added built-in profiling facility to generate profiling reports of Covered's internal functions
(useful for enhancing/fixing performance problems in commands)
- Added several performance enhancements to Covered's score command (achieved 8x speedup in one
simulation)
- Added "Debugging" section to user guide to document the usage of the CLI, verbose debugging output
generator and profiler.
- Fixed bug 1858408. This bug occurred when using newer versions of the OVL as well.
- Fixed bug 1861986.
- Added new diagnostics to verify additional functionality.
* 9/6/2007
Development release covered-20070906 finally made. Several severe changes to support CLI-style
runtime debugging, unnamed scope handling, some resimulation optimizations, automatic function/task
handling, and lots of bug fixes have gone into this release. The following changes are included in
this release.
- Added support for unnamed scopes and the ability to create variables within these scopes.
- Modified simulator memory handling to optimize performance.
- Fixed bug 1688487: The writability check on a -o file was accidentally removing the file if it
previously existed
- Added support for a CLI debugging environment when scoring simulations (only available if Covered
is built with the --enable-debug option).
- Fixed bug 1698806: Function calls made within operations were causing those operations to not get
bit-sized correctly.
- Added accumulated summary coverage information to generated reports for each metric.
- Fixed some compilation warnings dealing with large static values being assigned to unsigned long long
variables.
- Fixed bug with handling embedded scopes within generate blocks.
- Added the ability to simulate and get coverage for automatic tasks/functions.
- Added ability to read/write file sizes that extend beyond 2G in size.
- Fixed bug 1709984: Adding ability to enter defined values inside of covered_fsm attributes (to
match the documentation).
- Fixed memory leak bug in parser code.
- Fixed bug 1687409: Memory allocation information at end of score command written as a 32-bit signed
value -- changed to an unsigned long long value.
- Fixed error output when Tcl/Tk fails in initializing the Tcl/Tk environment.
- Fixed bug 1788991: Memory corruption bug due to memory (multi-dimensional array) accesses.
Lots of somewhat major changes to the simulation core and elaboration code have been made (hopefully for
the better). This development release is a springboard for adding further SystemVerilog support for some
other features of the language. Have fun and let's log those bugs!
* 12/05/2006
Development release covered-20061205 made. A few updates to the core code to properly support VPI
usage were necessary which is why this is not a stable release. At this point, regressions are fully
passing with Icarus Verilog, Cver and VCS in both dumpfile and VPI modes of operation -- an important
milestone for the upcoming 0.5 stable release. There is still additional testing of existing
functionality that needs to be done as well as finishing the GUI documentation support using the new
HelpSystem documentation reader utility before I would consider Covered ready for a new stable release.
The following changes are included in this release.
- Updated User Guide documentation to complete the list of score command options, document the -b
option to the report command, and include a FAQ item that addresses the question of the difference
between the stable releases and development releases.
- Updated regression Makefiles to allow testing of VPI, LXT and VCD modes of operation.
- Added Cver runs to regression Makefiles
- Started integrating the HelpSystem 1.5 Tcl/Tk widget into Covered's GUI to allow better and faster
documentation browsing for GUI information.
- Updated parser error output to make it easier to read.
- All bug fixes contained in the 0.4.8 stable release were applied to this release.
- Fixed bugs 1589519, 1589524 and 1589546 which are related to parser errors with the "signed" keyword.
- Fixed bug 1590104. A more meaningful error message is displayed if the -i option to the score
command is misused (or not used when it should be).
- Fixed bug 1599869. Uncovered "disable" statements are now handled properly by the report command.
- Lots of fixes to the VPI code were made as well as the core simulator to support correct behavior
when running in this mode, including:
- Added proper support for delay queueing
- Added 64-bit time support to core (originally this was just 32-bit).
- Added complete support for `timescale directive handling.
- Added -vpi_ts option to score command-line to allow the user to specify a timescale for
the generated top-level file created for VPI usage.
- Added support for time and integer types to make cbChangeValue callbacks.
- Added configuration support for detecting 8, 16, 32 and 64-bit types.
- Removed the usage of the iverilog-vpi script to create the Covered VPI module for Icarus Verilog,
using a normal call to the linker to create the appropriate shared object (allows for debug output
to be used in this mode).
Consider this development release to be a 0.5-beta release. If all goes well, the next release should be
the new 0.5 stable release! As always, have fun and log those bugs!
* 10/20/2006
Development release covered-20061020 made. The major additions in this release is the support for
memories/multi-dimensional arrays and bitwise coverage support. Associated with this functional
support, I have also created a new memory coverage metric that is available for usage in both the
report command as well as the GUI. Memory coverage currently answers the following questions about
a given memory:
1. What entries in the memory were written?
2. What entries in the memory were read?
3. What is the toggle information for each entry in the memory?
I plan to add a few more coverage points to memory coverage including: where any entries read before
they were written? and where any entries written and read simultaneously? However, I am open to more
ideas on memory coverage information that people would like to see. Read the accompanying User's Guide
and GUI User's Guide for more information on memory coverage and how to understand the coverage output
from both the report command and GUI. The following is a list of changes made from the last development
release.
- Fixed bug in code that removes statements from coverage consideration that were created by a
generate block.
- Fixed bug in race condition checker for generated items
- Fixed bug with multiply-and-assign (i.e., a *= b) operation
- Fixed bug in gen_item_resolve function where an instance was incorrectly being placed into a new
instance tree.
- Fixed parsing bug when a named begin/end block was empty
- Fixed bug in statement removal algorithm and optimized this process significantly
- Fixed several memory leak issues
- Added support for bitwise coverage information for vectored combinational expressions (i.e., given
the following code:
reg [3:0] a, b, c;
always @(posedge clock) c <= a & b;
You can get combinational logic coverage detail that would be equivalent to:
always @(posedge clock)
begin
c[0] <= a[0] & b[0];
c[1] <= a[1] & b[1];
c[2] <= a[2] & b[2];
c[3] <= a[3] & b[3];
end
This information is attainable using the new -b option to the report command.
- Adding parsing support for SystemVerilog "program" blocks (the contents within these blocks are ignored
for coverage purposes).
- Added support for SystemVerilog "final" blocks
- Updated GUI syntax highlighter to match all of the keywords that are currently detectable by the lexer
- Cleaned up extraneous comments from diagnostic Verilog files (should make the diagnostic tarball quite
a bit smaller).
- Added full parsing and handling support for memories and multi-dimensional arrays
- Added memory coverage metric to report command and GUI viewer
- Documentation updates to all user documentation for changes related to this release
- Fixed missing images in User Guide
- Added parsing and handling support of increment and decrement operators (both ++a and a++ varieties)
within expressions (i.e., if( a++ == b ) ...)
- Added proper support for the "wait( ... )" statement
- Optimized VPI version of Covered which should cause simulators to run faster than previously when interacting
with Covered through its VPI.
- Fixed bug with posedge and negedge handling within Covered to make it completely compliant with the LRM
(previously X->1 or Z->1 would not cause a posedge event to trigger and likewise for the negedge)
- Fixed several linking errors with the VPI library
- Added parsing support for unpacked arrays of non-registers for SystemVerilog enabled modules
- Fixed segmentation fault issue that occurred with generate blocks
- Fixed most compiler warnings (when using the -Wall operation to the compiler)
- Fixed bug with generating instances
- Fixed bug when merging two CDD files that contain full hierarchy
- Increased maximum bit width of signals from 1024 bits to 65536 bits
- Removed pragma comment parser from preprocessor as these are handled by the actual parser
This development release can be considered the beta release to a 0.5 stable release. The development
branch will be mostly in "feature freeze" mode at this point. Only bug fixes, documentation updates and
testing updates will be performed until we snap the new stable release. So give this version a try and
log those bugs!
* 09/04/2006
Development release covered-20060904 made. This is primarily an enhanced language support release
containing support for the Verilog-2001 'generate' block and support for some SystemVerilog constructs.
All bug fixes from the stable release branch have also been included in this release as well. Some
updates to the GUI (to match changes made on the score command side). The following is a list of
changes made from the last development release
- Complete parsing/simulation support for generate blocks include generate for, if/else and
case constructs.
- Fixed bug in hierarchically referencing items within an array of instances.
- Added -g option to score command to allow the user to specify on either a global or modular
level which Verilog generation to consider for that design. This allows a block of logic written
with Verilog-1995 in mind to use names that would be keywords in Verilog-2001 or SystemVerilog,
as an example.
- Removed "manstyle" type documentation in user's guide as this tool is no longer used for this
project. This change should be transparent to the user, however.
- Fixed scoping/hierarchical referencing rules to match the Verilog LRM properly.
- Added parsing/handling support for SystemVerilog always_comb, always_ff and always_latch blocks.
- Added parsing support for 'unique' and 'priority' SystemVerilog keywords before if and case
statements (Covered doesn't need to do anything with them, however).
- Added parsing/handling support for 'do .. while' SystemVerilog loops.
- Added parsing/handling support for new SystemVerilog data types, including: byte, bit, logic,
char, shorting, int and longint.
- Added -rI option to the score command which allows the user to completely bypass the race
condition checking phase of the score command.
- Added -B global option which obfuscates all identifying names from Covered's output (for use
in providing debugging information to the developer's of Covered).
- Added parsing/handling support for operate-and-assign SystemVerilog operators, including:
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, <<<=, >>>=, ++ and --. These can be used wherever
their counterparts can be used (including generate for loops).
- Added proper handling of Verilog-1995 delayed blocking assignments (i.e., "a = #5 b;" or
"a = @(posedge clk) c;"). Previously, the delay was being incorrectly ignored which could
have lead to infinite looping of always/forever blocks or could calculate incorrect coverage
information.
- Added parsing support for SystemVerilog .name and .* port lists.
- Added partial parsing/handling support for SystemVerilog 'typedef' usage. This should work for
enumerations but not other data types at this point.
- Added parsing/handling support for SystemVerilog 'enum' constructs. These should be fully
supported with the exception of their built-in '.first', '.last', '.next', '.prev', '.num' and
'.name' methods.
- Added full support of handling Verilog-1995 repeated delay blocking assignments (i.e.,
"a = repeat(5) @(posedge clk) b;". These were previously being treated as normal blocking
assignments.
- Added keyword highlighting support in GUI for Verilog-2001 and SystemVerilog keywords depending
on the -g value specified for a particular module.
- Added parsing support for SystemVerilog assertion, property and sequence blocks. These constructs
are ignored by the parser but should not cause a parsing error now.
- Added parsing support for SystemVerilog multi-dimensional arrays. These are ignored by the
parser but should not cause an error.
- Added full support for the SystemVerilog $root global space -- though limited testing has
been performed with this at this point.
- Added -s option to the report command to suppress the output for modules/instances that contain
no coverage information.
- Updated all user documentation to match changes made for this development release.
- Lots of new diagnostics added to regression suite to verify the majority of these changes.
There you have it. A lot of enhancements made for language support for Verilog-1995, Verilog-2001
and SystemVerilog. Some of the additions for SystemVerilog, especially typedefs and $root global
space, have not been fully verified to work and may still be a bit buggy, but everything else should
be expected to work as advertised. Please submit any bugs that you find. The next development
release should contain support for some more language enhancements, including full support for
typedef and enumeration usage, support for memories, multi-dimensional arrays, structs and unions.
I will also be looking at adding support for bitwise coverage information (for vectored calculations).
As always, have fun!
* 07/08/2006
Development release covered-20060708 made. This new development release for the future 0.5 stable
release contains several enhancements to the GUI. The primary differences are the changes to the File
menu, the ability to exclude/include coverage cases for all metrics, and a new look for the preferences
window. See the following notes regarding GUI changes made.
- Added ability to open/merge more than one file at a time (only available if Tk version is >= 8.4)
- Added ability to save a changed/merged CDD.
- Added ability to close all opened CDD files so that new CDD(s) can be opened/merged regardless of
the design without needing to exit and restart the GUI.
- Added ability to generate ASCII reports from the GUI (includes the ability to set reporting options)
- Added ability to exclude/include coverage cases for all metrics
- Changed the look of the preferences window to be more tabular for purposes of minimizing desktop
space for this window even as the number of options increases.
- Added missing GUI elements to preferences window and summary window for assertion coverage
- Updated README file to inform where to find documentation for the GUI.
- Moved some VCS-only diagnostics to shared simulator diagnostic pool due to enhancements in IV
- Updated all GUI documentation and images to match the current state of the GUI.
- Added an RPM spec file to the CVS tree which will be used to generate RPMs for future stable releases
- Fixed bug in score command that caused a segfault when two or more signals were declared using
the same parameter in their range description (i.e., reg [FOO:0] a, b;).
The coverage exclusion/inclusion work is the primary reason for creating this development release.
All coverage information and GUI elements are automatically updated whenever a coverage case for a metric
is changed to either exclude it from coverage consideration or include it (because it was previously
excluded). The file menu changes were badly needed as well and are required to properly support the
exclusion/inclusion work (this allows exclusions to be saved/merged). Please report any bugs that crop
up in this area. Thanks!
* 05/30/2006
Development release covered-20060530 made. This new development release for the future 0.5 stable
release contains a lot of new features and enhancements over the 0.4.x releases. The changes are listed
below (Note: the major feature additions are noted with an asterisk (*)). Please note that all bug fixes
that were made to the stable releases (up and including 0.4.4) are included in this development release
as well.
* Added support for FSM coverage output in the GUI
* Added support for assertion coverage in the GUI and ASCII report mechanism
* Added Covered VPI module which can now allow Covered to score a design while the simulation is
executing (only the Icarus Verilog, Cver and VCS simulators are supported at this time).
* Added support to Covered merge command to merge two or more CDD files with one command (previously
only two CDD files could be merged at a time).
- Added support to allow coverage handling of blocks that contain the $display system call (previously
any block containing one of these system calls was disregarded for coverage).
- Added ability for Covered to automatically remove the need for OVL assertions when the "-A ovl" option
is not specified to Covered's score command.
- Added support for environment variable substitution in the configuration file that is passed to
Covered's score command with the -f option.
- Added support to allow Covered's GUI to be started from any directory and work properly (previously
Covered's GUI had to be started in the same directory as the design was scored from).
* Added syntax highlighting to all Verilog source code in the GUI (added support in Preferences window
to allow the user to specify different colors for the syntax highlighter).
* Causing all Verilog source code to be preprocessed before being displayed in the file viewer (fixed
bugs with defined values not being highlighted correctly).
- Updated all user guide, GUI and man documentation to match the current state of Covered.
- Added many new diagnostics to the test suite to verify the new functionality.
Lots of cool new features to give a go. You can consider these new features to be a beta version -- not
all features have been completely verified to work at this point. So please report any bugs that you find
with this new version. Have fun!
* 5/27/2006
Stable release covered-0.4.4 made. This release contains a bug fix to proper handle hierarchical
referencing of parameter values. This feature was technically not supported in the past but caused
an internal assertion error when this was performed. The feature is now fully supported.
* 4/21/2006
Stable release covered-0.4.3 made. This release contains a bug fix to the statement connection function that
caused segmentation faults during the score command. Also added support for big endian wires/regs. This
information was being ignored by the parser and, consequently, was not being handled correctly by Covered's
internal simulator, leading to incorrect coverage information. The lack of this support was also causing
an internal error in the memory allocation routine when scoring the dumpfile.
* 4/17/2006
Stable release covered-0.4.2 made. This release contains a bug fix that caused an assertion error in the
binding.c source file to occur. The reason for this assertion was a syntax error in the parser that caused
problems when more than one task call was made in a statement block. Also added support for multi-line
definitions (i.e., a '\' character used at the end of a definition line). This was missing but was not meant
to be missing.
* 4/4/2006
Stable release covered-0.4.1 made. This release contains one bug fix that causes an assertion error when
compiling designs that use a concatenation operation on the left-hand-side of assignment statements. If
you are experiencing this problem with the 0.4 release, it is recommended that you use this new release
instead.
* 3/29/2006
Stable release covered-0.4 made. In addition to all of the features, optimizations and bug fixes
that have gone into the development releases from the 0.3 stable release, the following features, updates
and bug fixes have been added.
- Fixed bug with a statement connection issue that causes lines of code to be not considered for
coverage that should have been.
- Fixed bug in report command where combinational expressions were not being output to match the original
Verilog code.
- Added CDD file viewer window to GUI to allow the user to see which CDD files are currently loaded/merged.
- Fixed bug in combinational logic verbose viewer which caused the window to resize dependent upon
the location of the cursor (this was an annoyance)
- Changed the output of simple combinational logic to change to unary combinational logic output if either
the left or the right expression was a constant value (eliminates unachievable combinational logic cases
from being output leading to more accurate coverage results).
- Removed combinational expressions that contain only constant values from being considered for coverage.
- Updated simple combinational logic output in reports to be as concise as possible for AND and OR type
expressions.
- Removed duplication of information in CDD files for race conditions.
- Fixed bug in GUI dealing with showing race conditions
- Fixing bug in GUI pertaining to the next/previous buttons in the combinational logic detail viewer. Previously,
clicking on one of these buttons would only advance you to the next uncovered line. Now it will advance
you to the next uncovered statement.
- Updated development, user and GUI documentation to reflect the above changes and to bring them up-to-date
with the rest of the tool.
Please see the ChangeLog file for all changes made from the 0.3 stable release to the 0.4 stable release.
Lots of enhancements, features, optimizations, bug fixes, performance improvements and documentation improvements
are contained in this stable release, making it very worth while for any Covered users to get their hands on
it.
* 2/18/2006
Development release covered-20060218 made. A lot of work has gone into adding a lot more Verilog-2001
support, added Verilog-1995 support, GUI improvements/fixes, user documentation additions/updates,
adding LXT dumpfile support and the usual bug fixes. I have also removed the diagnostic directory from
the Covered tarball and am making it available as its own tarball since it is growing by leaps and bounds
these days. The following is a list of the changes in this release from the past release.
- Added support for the following Verilog 2001 constructs:
- `ifndef, `elsif and `line preprocessor directives
- Constant function support
- Explicitly named parameter overrides
- Correct support for localparam
- Implicit (wildcard) sensitivity lists (@*)
- Support for signed values (integers are now treated as signed values) and proper handling of
signed expressions
- Immediate register assignment (ex. reg a = 1'b0)
- Variable multi-bit selects (ex. a[b+:10] or a[b-:2])
- Exponential power operator (**)
- Arithmetic shift operators (>>> and <<<)
- Inline parameters (i.e., parameters placed before a module port list)
- Inline port declarations (ex. module foo ( input wire [1:0] a, ... );)
- "Null" parameter overrides (ex. foo #(0,,2) bar (...);)
- Arrays of instances
- Added more support for attribute locations
- Added support for using LXT/LXT2 -style dumpfiles instead of just VCD files
- Fixing bug to properly bind to the appropriate task, function or named block when there
are two or more of this functional units with the same name.
- Changed all error information to get sent to stderr regardless of the output mode we are in
- Added left shift, right shift, exponential power, and constant function call operators to list
of valid operators to be used in constant expressions.
- Fixed bug for resolving parameter values that are used in tasks, functions or named blocks but
are not declared there (they are declared in the parent module).
- Added full support for hierarchical referencing
- Added full support for escaped names (ex. wire \some_name[0] ;)
- Added support for performing bit selection on RHS of parameter assignments
- Added full support for sizing parameters (ex. "parameter [2:0] foo = 0;")
- Fixed ASCII report output to display uncovered toggle signals in line order (this was inverted
for some reason).
- Fixed bug in score command-line parser to not segfault if file given in -f option is empty
- Fixed several bugs in GUI
- Added additional features for report GUI
- Added summary report window with ability to see modules/instances ordered by coverage
percentage for a given metric in either increasing or decreasing order (coverage information
is also color-coded to make it easy to tell which modules are "fully covered", "covered well
enough", or "not covered well enough").
- Added preferences window and removed preferences menu -- improved method of color selection
and added a coverage "good enough" selector used in the summary window
- Changed toggle coverage source code browser to only underline one instance of an uncovered
signal (this position is first implicit or explicit declaration of the signal) to improve
readability.
- Added configuration file read/write support for storage of Covered's preferences
- Added help buttons to toggle detail, combinational logic detail, preferences and summary window
to allow online help pages to be displayed for the current window
- Added GUI online help pages for toggle window, combinational logic window, preferences window
and summary window as well as updated all out-of-date information.
- Added navigational GUI elements to help the user find the next/previous uncovered line from any
window. Also added a search GUI element for finding any string in the source code window.
- Updates to user guide and development documentaiton to bring things up-to-date.
In summary, there have been lots of features added to both the score command and GUI report tool.
The CDD files generated from this release are not backward compatible with older releases. I plan
to make this version the next stable release once it has had some more test time applied to it.
So please submit those bugs!
* 1/9/2006
Development release covered-20060109 made. It has been almost a year since the last development
release of Covered, but in the meantime there has been a lot of work put into the score command
of Covered during this time to fix bugs, add more coverage support for various Verilog constructs,
simulate more accurately, remove memory corruption/estrangement and improve the run-time speed
of the score command. I think that user's of Covered will appreciate the enhancements. Documentation
updates have been made and build problems have been fixed (Covered now compiles cleanly for
Fedora Core 3 builds). I plan to revisit Covered's GUI in the next release to fix various bugs
and improve the usability. The following is a description of what has changed in this release from the
last release:
- Blocking assignments in covered blocks are now performed by Covered's simulation core instead of
being taken from the dumpfile to improve simulation/coverage accuracy.
- Fixed lots bugs with statement block removal
- Added patch to parser.y to fix compiling problems with bison-2.0.
- Increased space for module/instance name in reports
- Added full support for the following Verilog constructs:
- tasks and task calls
- functions and function calls
- named begin/end blocks
- fork/join
- event types and event triggers
- hierarchical referencing (both relative and top-of-tree scoping)
- initial blocks
- for, repeat and while looping
- block disabling
- Fixed bug with net_decl_assign statements (the line, start column and end column information was
incorrect, causing problems with the GUI output).