forked from intel/device-modeling-language
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RELEASENOTES.docu
1721 lines (1719 loc) · 93.2 KB
/
RELEASENOTES.docu
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
<!--
© 2021-2023 Intel Corporation
SPDX-License-Identifier: MPL-2.0
-->
<rn id="dml">
<name>Device Modeling Language (DML)</name>
<build-id value="1313"><add-note> A bug that caused bad C code to be
generated when using 'switch'
was fixed <bug number="4766"/> <bug number="4788"/>. </add-note></build-id>
<build-id value="1314"><add-note> A bug that prevented function type typedefs
from working properly was
fixed <bug number="4934"/>. </add-note></build-id>
<build-id value="1315"><add-note> PCI device code has been added to the
standard library files. The
DEC21140A-dml device is provided as an example (refer to the Simics
Programming Guide for more details). </add-note></build-id>
<build-id value="1317"><add-note> A bug that prevented the 'get' and 'set'
methods in banks from working
properly were fixed <bug number="4981"/>. </add-note></build-id>
<build-id value="1317"><add-note> This release contains a rewrite of some of
the internals of the DML
compiler. This significantly reduces the compile time of some complex
models. It also removes some limitations that caused problems when using
arrays of registers or connections
<bug number="1973"/>,
<bug number="2967"/>,
<bug number="5021"/>,
<bug number="5023"/>.</add-note></build-id>
<build-id value="1317"><add-note> The 'ERANGE' error message has been
removed. </add-note></build-id>
<build-id value="1318"><add-note> Standard register templates (in
utility.dml) have been changed to be less
verbose unless absolutely necessary, and adapted to work better
with field. </add-note></build-id>
<build-id value="1321"><add-note> Attributes can now be declared
as arrays. </add-note></build-id>
<build-id value="1322"><add-note> The DML tutorial has
been updated. </add-note></build-id>
<build-id value="1322"><add-note> A bug that caused bad code to be generated
in some cases when && or
|| were used has been fixed <bug number="5269"/>. </add-note></build-id>
<build-id value="1326"><add-note> A problem that made it hard to extract the
object name of an objected
pointed to by a 'connect' has been fixed. Another effect of this bug was
that some errors where '->' was used instead of '.' went undetected. The
DEC21140A-dml sample code contained one such error and has been
updated <bug number="4690"/>. </add-note></build-id>
<build-id value="1327"><add-note> A bug that made it impossible to compare
two boolean variables has been
fixed. At the same time, this fix also made the compiler catch illegal
compares of booleans with integers
<bug number="4900"/>. </add-note></build-id>
<build-id value="1327"><add-note> Fixed a problem with the grammar that made
it possible to declare local
variables and function parameters without a type. Note that when declaring
external C functions with an empty parameter list, you should not write
(void) <bug number="2722"/>. </add-note></build-id>
<build-id value="1327"><add-note> Fixed a bug that made the compiler lose
function calls made in the
initializer of local method variables if the variable wasn't used in the
method <bug number="5425"/>. </add-note></build-id>
<build-id value="1329"><add-note> A bug that prevented the 'after (..) call
..;' statement to work was
fixed <bug number="5480"/>. </add-note></build-id>
<build-id value="1329"><add-note> Some error handling bugs were fixed that
made dmlc unable to detect
or properly report some error situations. </add-note></build-id>
<build-id value="1330"><add-note> PCI support: PCI BAR mappings can be
customized at mapping time by
overriding the new customize_mapping() function in
each BAR. </add-note></build-id>
<build-id value="1331"><add-note> rom interface definition added to standard
Simics import files. </add-note></build-id>
<build-id value="1331"><add-note> PCI support: documentation on how to write
PCI devices in DML is now
available in the Programming Guide. </add-note></build-id>
<build-id value="1331"><add-note> PCI support: PCI BAR mapping customization
was extended. Refer to the
Programming Guide for more information. </add-note></build-id>
<build-id value="1332"><add-note> Post increment and decrement operators have
been fixed <bug number="5553"/>. </add-note></build-id>
<build-id value="1332"><add-note> Declaration an attribute with parameter
allocate_type = "string"
now works <bug number="5562"/>.</add-note></build-id>
<build-id value="1332"><add-note> If an argument expression sent to an
inlined method had side effects, the
side effects were sometimes not executed if the inlined method didn't use
the value. This has been fixed <bug number="5582"/>.</add-note></build-id>
<build-id value="1334"><add-note> A serious bug in the minus arithmetic
operator has been fixed. Expressions
that followed the patterns (x * C1 - C2), (C1 * x - C2), where C1 and C2 are
arbitrary constants were sometimes miscalculated. The same problem existed
for expressions where the multiplication was replaced another arithmetic
operator other than addition <bug number="5627"/>. </add-note></build-id>
<build-id value="1334"><add-note> A parameter called "log_group" has been
added to device, bank, group, and
register objects. If set, affected register accesses will be logged using
this log group in addition to the Register_Read or Register_Write log
groups. </add-note></build-id>
<build-id value="1334"><add-note> A bug that made dmlc crash if a variable
was used when inlining another
method several times has been fixed
<bug number="5639"/>. </add-note></build-id>
<build-id value="1335"><add-note> The Emacs DML mode has been improved to
provide proper syntax highlighting
for DML. </add-note></build-id>
<build-id value="1335"><add-note> DML PCI common code has been made more
flexible by setting many functions
are default so they can be overridden </add-note></build-id>
<build-id value="1336"><add-note> Fixed a bug that caused bad handling of
switch statements where the switch
expression was a constant <bug number="5698"/>. </add-note></build-id>
<build-id value="1339"><add-note> Fixed a bug so that <<= and >>=
work as intended <bug number="5803"/>. </add-note></build-id>
<build-id value="1339"><add-note> Reduced compilation times when using large
register arrays. </add-note></build-id>
<build-id value="1339"><add-note> Made it possible to create persistent
attributes by setting the 'persistent'
parameter to true </add-note></build-id>
<build-id value="1340"><add-note> Fixed another compilation time problem when
two large register arrays were
located close together <bug number="5857"/>. </add-note></build-id>
<build-id value="1341"><add-note> Fixed a bug that sometimes cause accesses
to misinterpreted as accesses to a
register array with an enormous index, causing a simulator crash
<bug number="5878"/>.</add-note></build-id>
<build-id value="1341"><add-note> It is now possible to declare an C function
as taking a variable number of
arguments in an 'extern' declarations. This can reduce the number of
compilation warnings. When doing this, the DML compiler can't do any type
checking on function arguments, and some care need to be taken not to
e.g. pass 64-bit values to functions expecting 32-bit values
<bug number="3007"/>. </add-note></build-id>
<build-id value="1341"><add-note> Previous versions of dmlc didn't properly
check the types of expressions in
assignments. This has now been fixed, which means that it could detect
problems in existing code that went
undetected before. </add-note></build-id>
<build-id value="1342"><add-note> Updated documentation of 'byte_order'
parameter <bug number="5933"/>. </add-note></build-id>
<build-id value="1342"><add-note> Function calls to C functions were not type
checked properly previously.
This release fixes this, but it should be noted that some code might need to
be updated if it contains type errors that have gone undetected
<bug number="5408"/>. </add-note></build-id>
<build-id value="1342"><add-note> Improved
error checking. </add-note></build-id>
<build-id value="1346"><add-note> An attribute can now be written inside a
group, which can be used as a way
of creating multidimensional arrays
<bug number="5989"/>. </add-note></build-id>
<build-id value="1352"><add-note> Some minor bugs in the compiler were fixed
<bug number="6174"/>,
<bug number="6227"/>,
<bug number="6283"/>,
<bug number="6378"/>,
<bug number="6398"/>,
<bug number="6409"/>.</add-note></build-id>
<build-id value="1365"><add-note> Floating point constant such as 1E6 now
work <bug number="5522"/>. </add-note></build-id>
<build-id value="1365"><add-note> Negation of floating point values didn't
work <bug number="6999"/>. </add-note></build-id>
<build-id value="1365"><add-note> Some minor bugs in the compiler were fixed
<bug number="6928"/><bug number="6987"/>.</add-note></build-id>
<build-id value="1367"><add-note> Changed "data" objects so that they can
never be used as hierarchical
objects with parameters. Previously they were assigned standard parameters
"dev", "this", and "parent", which could conflict with struct member names
<bug number="7070"/>.</add-note></build-id>
<build-id value="1374"><add-note> Fixed a bug that caused dmlc to generate
files in the source directory if a
full path name to the source file was given
<bug number="7652"/>. </add-note></build-id>
<build-id value="1500"><add-note> The compiler supports the new language
revision DML 1.2. See the DML
reference manual for a list of changes from DML 1.0. </add-note></build-id>
<build-id value="1500"><add-note> The interpretation of the -D flag to dmlc
has changed. Writing -Dpar=val
means that the parameter 'par' is set to 'val', where val is a simple DML
expression. The expression can be a literal string, integer, float, or bool
value. The difference from previous versions is that to set a parameter to a
string value, the value must include quotes. </add-note></build-id>
<build-id value="1504"><add-note> Valid XML output produced when --info flag
used. </add-note></build-id>
<build-id value="1505"><add-note> Some failures in error reporting were fixed
<bug number="7927"/>. </add-note></build-id>
<build-id value="1506"><add-note> New error message (ECAST) for bad casts
that went undetected
<bug number="8059"/>.</add-note></build-id>
<build-id value="1506"><add-note> Some bugs in the implementation of layout
types were fixed
<bug number="7903"/>,
<bug number="8020"/>,
<bug number="8139"/>.</add-note></build-id>
<build-id value="1512"><add-note> DML devices do not crash when posting event
before the queue attribute has
been set <bug number="8323"/>. </add-note></build-id>
<build-id value="1517"><add-note> The workspace makefiles and DMLC have been
updated to always generate an XML
file with register information for each DML device. </add-note></build-id>
<build-id value="1520"><add-note> (Windows only) Depending on the host
configuration, dmlc.exe could report
missing DLLs. These DLLs are now provided along
with dmlc.exe. </add-note></build-id>
<build-id value="1521"><add-note> Handle variable width specifiers in log
statements <bug number="8618"/>. </add-note></build-id>
<build-id value="1526"><add-note> (Windows only) Depending on the host
configuration, dmlc.exe could fail
because of a missing python DLL. This DLL is now provided along dmlc.exe <bug
number="8751"/>. </add-note></build-id>
<build-id value="1527"><add-note> The <tt>dmlc</tt> compiler no longer
handles the obsolete DML 0.9
language revision that was only used internally
at Virtutech. </add-note></build-id>
<build-id value="1531"><add-note> An issue that prevented access to const
layout members for some
bit-widths was fixed <bug number="8963"/>. </add-note></build-id>
<build-id value="1531"><add-note> A problem that caused the wrong register to
be accessed when the
read_access or write_access method of a bank was overridden has been
fixed <bug number="8965"/>. </add-note></build-id>
<build-id value="1532"><add-note> Made it possible to take a big-endian bit
slice on array references in
DML 1.2 <bug number="8677"/>. </add-note></build-id>
<build-id value="1532"><add-note> A scalability problem with large register
arrays was fixed <bug number="8978"/>. </add-note></build-id>
<build-id value="1534"><add-note> Fixed a problem that could cause crashes in
devices with register
arrays near offset 0 <bug number="9096"/>. </add-note></build-id>
<build-id value="1536"><add-note> Fixed a bug that prevented bit slicing
operations on struct members in
DML 1.2 <bug number="9136"/>. </add-note></build-id>
<build-id value="1538"><add-note> Fixed the implementation of the <tt>-D</tt>
option to <tt>dmlc</tt>
which didn't work as advertised <bug number="9248"/>.</add-note></build-id>
<build-id value="1540"><add-note> Fixed a problem that could cause errors in
generated C code when
declaring register arrays when the index was passed to an inlined
method that didn't use it <bug number="9335"/>.</add-note></build-id>
<build-id value="1540"><add-note> Fixed a problem with dependencies between
layout types <bug number="9358"/>. </add-note></build-id>
<build-id value="1540"><add-note> Fixed a name lookup problem when using
anonymous banks in DML 1.0
<bug number="4970"/>.</add-note></build-id>
<build-id value="1540"><add-note> Made it less likely that bit slice
operations in register methods were
wrong when using "be" bit numbering
<bug number="9256"/>. </add-note></build-id>
<build-id value="1541"><add-note> Fixed a problem that caused the compiler to
crash when using constants
in array sizes in type declarations
<bug number="9412"/>. </add-note></build-id>
<build-id value="1541"><add-note> Fixed a problem when the array index was
used incorrectly used in a
documentation string <bug number="9467"/>. </add-note></build-id>
<build-id value="1543"><add-note> Fixed so that registers and fields that
contain "data" members no longer cause the DML compiler to generate broken C code
<bug number="6297"/>. </add-note></build-id>
<build-id value="1544"><add-note> When inlining a method using a constant
integer value, where the
corresponding method parameter has a type, the parameter value is not
properly converted to the parameter type
<bug number="9186"/>.</add-note></build-id>
<build-id value="1545"><add-note> Added <tt>design_limitation</tt> template
to standard
library <bug number="9602"/>. </add-note></build-id>
<build-id value="1548"><add-note> The <iface>rapidio</iface> interface has
been changed, and library
files <file>rapidio.dml</file> and <file>rapidio-device.dml</file>
have been updated. </add-note></build-id>
<build-id value="1548"><add-note> Fixed a compiler error where boolean
members of const structs could
sometimes not be accessed. </add-note></build-id>
<build-id value="1550"><add-note> A problem when referencing names from
within a register array has
been fixed
<bug number="9825"/>.</add-note></build-id>
<build-id value="1550"><add-note> A problem with layout types in
<tt>data</tt> has been fixed
<bug number="9734"/>.</add-note></build-id>
<build-id value="1552"><add-note> Fixed an issue that prevented references to
some DML objects (banks) to
appear in lists. </add-note></build-id>
<build-id value="1554"><add-note> Fixed an issue that made it impossible to
define a pointer to a locally
declared layout <bug number="9985"/>. </add-note></build-id>
<build-id value="1555"><add-note> Extended dbuffer API with truncate and
append_data functions. </add-note></build-id>
<build-id value="1555"><add-note> Allow elements from arrays (e.g. register
arrays) to appear in lists,
<bug number="9992"/>. </add-note></build-id>
<build-id value="1555"><add-note> DMLC will no longer throw away the
constness of a void pointer when
emitting C-code <bug number="9563"/>. </add-note></build-id>
<build-id value="1556"><add-note> Fixed a bug that sometimes caused the value
of a field to be corrupted when
a partial register access was made
<bug number="10206"/>. </add-note></build-id>
<build-id value="2502"><add-note> The names of generated C functions have
changed slightly. The name
"foo_bar.fie" method now maps to the C function "foo_bar__fie",
i.e. a dot in the fully qualified name maps to double underscores.
This avoids common collisions between methods with names like
"foo.set" and "foo_set" <bug number="5290"/>. </add-note></build-id>
<build-id value="2503"><add-note> Static variables are now stored in the
device object, which means
that they are no longer shared between device instances. This was
done do make it easier to make the device models thread safe
<bug number="9743"/>.</add-note></build-id>
<build-id value="2504"><add-note> A minor bug in the <fun>next</fun> method
of events
with <tt>timebase = "seconds"</tt> was fixed
<bug number="10632"/>.</add-note></build-id>
<build-id value="2504"><add-note> A compiler bug that could cause the
compiler to crash when
comparing pointers with $dev.obj has been fixed
<bug number="10621"/>.</add-note></build-id>
<build-id value="2504"><add-note> The compiler now prevents the assignment of
a pointer to a
constant value to a variables whose type is a pointer to a
non-constant value. For example, a string literal has the type
<tt>const char *</tt> and can be assigned to a variable of that
type, but not to a variable of type <tt>char *</tt>
<bug number="10628"/>.</add-note></build-id>
<build-id value="2504"><add-note> Fixed a bug that could cause "wrong number
of function arguments"
[EARG] error messages in some cases
<bug number="10248"/>.</add-note></build-id>
<build-id value="2504"><add-note> Check bitfields member sizes
<bug number="10058"/>.</add-note></build-id>
<build-id value="2504"><add-note> Oversized bitfields declarations are
reported properly as EBFLD
<bug number="10110"/>.</add-note></build-id>
<build-id value="2504"><add-note> Detect missing bitfields members
<bug number="10112"/>.</add-note></build-id>
<build-id value="2504"><add-note> Expression of a <tt>bitfield</tt> type can
now be used as integers in log statements
<bug number="10054"/>.</add-note></build-id>
<build-id value="2505"><add-note> The sign of layout members are no longer
ignored (all layout members used
to be treated as unsigned) <bug number="10634"/>. </add-note></build-id>
<build-id value="2505"><add-note> Invalid expressions involving the pre and
post increment/decrement
operators (<tt>++</tt> and <tt>--</tt>) are detected and reported properly
<bug number="10670"/>. </add-note></build-id>
<build-id value="2506"><add-note> Arguments passed when inlining methods are
now checked more
thoroughly against the declared method parameter types.
The error messages are also improved
<bug number="8493"/>,
<bug number="10829"/>.</add-note></build-id>
<build-id value="2506"><add-note> Constant references into a constant list
are now treated as
constant expressions
<bug number="8424"/>.</add-note></build-id>
<build-id value="2506"><add-note> More problems relating to for <tt>++</tt>
and <tt>--</tt>
expressions were fixed
<bug number="9000"/>,
<bug number="9009"/>.</add-note></build-id>
<build-id value="2507"><add-note> Made sure that an attribute that
corresponds to a <tt>connect</tt>
doesn't perform any side effects if it is set to its current
value. Connecting or disconnecting from links is only done when the
value is actually changed
<bug number="10943"/>. </add-note></build-id>
<build-id value="2508"><add-note> Added recommendations to set the
<tt>desc</tt> parameter in
devices for human-readable presentation of class names. Warnings
about missing <tt>desc</tt> parameters can be enabled using
the <tt>--warn=WNSHORTDESC</tt> option to <tt>dmlc</tt>.
The device's <tt>desc</tt> parameter is now automatically assigned
to the <tt>class_desc</tt> attribute
<bug number="10988"/>. </add-note></build-id>
<build-id value="2513"><add-note> Events with <tt>timebase="stacked"</tt> now
work in DML 1.2.
<bug number="11261"/>. </add-note></build-id>
<build-id value="2514"><add-note> Included parentheses in <tt>?:</tt>
expressions in the generated C code
when needed.
<bug number="11293"/>. </add-note></build-id>
<build-id value="2517"><add-note> Method declarations that use unknown types
are now always detected as an
error. Previously, the error was only detected if the method was invoked at
least once. </add-note></build-id>
<build-id value="2517"><add-note> Don't crash when merging port definitions
<bug number="11373"/>. </add-note></build-id>
<build-id value="2520"><add-note> Attributes that have no <tt>set</tt> or
<tt>get</tt> method will be
marked as read-only or write only, respectively. An error (EACHK)
is now also raised if a checkpointed attribute lacks either setter
or getter. A checkpointed attribute is an attribute with the
parameter <tt>configuration</tt> set to either <tt>"required"</tt>
or <tt>"optional"</tt> (the default). Another (EANULL) error is raised if
an attribute has neither setter or getter unless its
<tt>configuration</tt> parameter is set to <tt>"none"</tt>
<bug number="5601"/>.</add-note></build-id>
<build-id value="2521"><add-note> A register <tt>get</tt> method that throws
an exception will now cause the
attribute getter function to return an invalid value
<bug number="4841"/>.</add-note></build-id>
<build-id value="2522"><add-note> A bug that could cause dmlc to crash when
doing a <tt>select</tt>
over a large list was fixed
<bug number="11506"/>.</add-note></build-id>
<build-id value="2523"><add-note> Added the missing
<type>ms1553_mode_code_t</type> type to the DML library
<bug number="11643"/>.</add-note></build-id>
<build-id value="2525"><add-note> Registers and fields that are
checkpointable but have the parameter
<tt>allocate=false</tt> are required to define <tt>get</tt> and <tt>set</tt>
methods. This is now checked in a better way by the compiler
<bug number="6436"/>.</add-note></build-id>
<build-id value="2525"><add-note> The <tt>read_constant</tt> template will
now define a <tt>get</tt> method
that returns the value <bug number="11755"/>. </add-note></build-id>
<build-id value="2525"><add-note> Registers that have no <tt>set</tt> or
<tt>get</tt> method will be
marked as read-only or write only, respectively. An error (EACHK)
is now also raised if a checkpointed register lacks either setter
or getter. A checkpointed register is a register with the
parameter <tt>configuration</tt> set to either <tt>"required"</tt>
or <tt>"optional"</tt> (the default). Another (EANULL) error is raised if
an attribute has neither setter or getter unless its
<tt>configuration</tt> parameter is set to <tt>"none"</tt>
<bug number="11350"/>.</add-note></build-id>
<build-id value="2525"><add-note> A bug that could cause compiler error when
interpreting a single-bit bit
slice expressions as a boolean has been fixed
<bug number="6555"/>. </add-note></build-id>
<build-id value="2527"><add-note> <tt>port</tt> blocks may now contain
<tt>connect</tt> and <tt>attribute</tt>
blocks. </add-note></build-id>
<build-id value="2527"><add-note> The <tt>int_register</tt> interface that is
implemented by register banks now
handles register arrays and register groups when mapping names to numbers
<bug number="11835"/>.</add-note></build-id>
<build-id value="2528"><add-note> Handle code generation of the
<tt>int_register</tt> interface in register
banks in the compiler. This makes it more efficient, especially when using
arrays of registers
<bug number="11784"/>.</add-note></build-id>
<build-id value="2530"><add-note> The previous change to the
<tt>int_register</tt> interface was broken for
register writes and has been fixed
<bug number="12008"/>.</add-note></build-id>
<build-id value="2544"><add-note> It is now possible to bitslice a bitslice
in big-endian mode. This also
means it is now possible to bitslice a big-endian bitfield member
<bug number="12312"/>. </add-note></build-id>
<build-id value="3000"><add-note> The way the Simics API is imported into DML
has been updated. Every
C header file now corresponds to one DML library file that contains
its definitions. When using the <tt>4.2</tt> API, only the device
API is automatically imported. </add-note></build-id>
<build-id value="3000"><add-note> When using the Simics 4.2 API,
<tt>bool</tt> in the C API is translated to
<tt>bool</tt> in DML. When using older API versions, it will still be
translated to <tt>int</tt>. This means that code that had to convert the
return value from <fun>SIM_attr_boolean</fun> and similar functions to
booleans can now use the return value directly
<bug number="11421"/>.</add-note></build-id>
<build-id value="3000"><add-note> The DML compiler now accepts <tt>error</tt>
statements to cause the
compilation to fail in any context where an object could be declared, and not
only inside methods. This change only applies to
DML 1.2. </add-note></build-id>
<build-id value="3001"><add-note> DML 1.2 was extended with the ability to
call the default implementation of a
method when it is overridden by another implementation. If there is a method
with a default implementation, another (non-default) implementation of the
same method can call the default implementation with <tt>call
default(args)</tt> or <tt>inline default(args)</tt>. </add-note></build-id>
<build-id value="3001"><add-note> Support for variable-length local arrays
was added. This means that an array
can have a length that is given by any expression that is evaluated when the
array is declared. </add-note></build-id>
<build-id value="3001"><add-note> Optional attributes marked with
<tt>allocate_type = "string"</tt>
will now allow null values
<bug number="12739"/>.</add-note></build-id>
<build-id value="3005"><add-note> Format directive precision in log
statements can now be more than
a single digit. </add-note></build-id>
<build-id value="3005"><add-note> Floating-point constants are no longer
truncated when generating
the C code
<bug number="13410"/>.</add-note></build-id>
<build-id value="3007"><add-note> The API files
<file>simics/model-iface/cpu-group.dml</file>,
<file>simics/model-iface/exception.dml</file> and
<file>simics/model-iface/processor-info.dml</file> are no longer
imported automatically. Only the device API is imported
automatically, and these additional files were imported by
mistake
<bug number="13616"/>.</add-note></build-id>
<build-id value="3009"><add-note> The bit slice operator now works on
bitfields expressions, treating them as
integers <bug number="13723"/>. </add-note></build-id>
<build-id value="3012"><add-note> When a log message included a bit slice
expression, the generated
C code could sometimes be wrong. This bug could easily be
triggered when using 64-bit registers
<bug number="11589"/>. </add-note></build-id>
<build-id value="3012"><add-note> Assignment expressions can now be used for
their values, as in C
<bug number="13814"/>.</add-note></build-id>
<build-id value="3014"><add-note> The <tt>sizeof</tt> operator is defined to
work on expressions, and
the <tt>sizeoftype</tt> operator works on types. Due to a limitation in the
compiler, <tt>sizeof</tt> also worked on simple type names. This will now
produce a warning (WSIZEOFTYPE)
<bug number="13787"/>. </add-note></build-id>
<build-id value="3014"><add-note> The DML compiler no longer includes time
stamps in generated
files. This ensures that the generated files are always identical
for the same input <bug number="13874"/>. </add-note></build-id>
<build-id value="3015"><add-note> A <tt>WDEPRECATED</tt> warning is now
emitted if an event uses
the <tt>"stacked"</tt> timebase. Stacked events are deprecated in Simics 4.2
<bug number="13930"/>. </add-note></build-id>
<build-id value="3015"><add-note> It is now possible to do a single-bit slice
on a <tt>data</tt> reference
with the <tt>$d[i]$</tt> syntax
<bug number="5800"/>. </add-note></build-id>
<build-id value="3017"><add-note><tt>connect</tt>s may now have
a <fun>validate_port</fun> method; it is called prior to updating
the value just like <fun>validate</fun>, but takes a port argument
as well. Note that this will interfere with any existing methods
named <fun>validate_port</fun> in <tt>connect</tt> objects.</add-note></build-id>
<build-id value="3018"><add-note> Types like <tt>(uint48 *)</tt> are now
properly detected as illegal by the
DML compiler. Previously they were not treated as an error, but had no
defined meaning <bug number="9082"/>. </add-note></build-id>
<build-id value="3024"><add-note> A new method called <fun>destroy</fun> is
now defined at the top
level. It can be overridden to include code that will be executed before
a device object is deleted. It should deallocate all memory explicitly
allocated by the device model. Note that this will conflict with any
previously defined method called <fun>destroy</fun>. This also means that
it is now possible to delete objects defined by DML
<bug number="8180"/>. </add-note></build-id>
<build-id value="3029"><add-note> The DML compiler now uses less memory when
compiling large models. This
also makes it slightly faster, but most importantly makes it possible to
compile larger models without lots of RAM. </add-note></build-id>
<build-id value="3031"><add-note> The dependency generation (with the
<tt>-M</tt> flag to dmlc) has been
improved. </add-note></build-id>
<build-id value="3035"><add-note> The <tt>new</tt> operator on a pointer type
no longer causes compilation
errors in the C code <bug number="9209"/>. </add-note></build-id>
<build-id value="3035"><add-note> The <tt>call default(...)</tt> syntax had a
few problems that
have been fixed <bug number="14708"/>. </add-note></build-id>
<build-id value="3037"><add-note> A problem in the <tt>call default</tt>
implementation was fixed
<bug number="14793"/>. It required that the default implementation used
the exact same names for the method parameters. </add-note></build-id>
<build-id value="3046"><add-note> The <tt>evclass</tt> parameter in events is
now documented
<bug number="14447"/>. </add-note></build-id>
<build-id value="3046"><add-note> DML 1.2 now supports arrays of ports <bug
number="7546"/>. </add-note></build-id>
<build-id value="3047"><add-note> The documentation of the standard templates
use for making registers and
fields constant was updated <bug number="14344"/>. </add-note></build-id>
<build-id value="3502"><add-note> PCI support: config space access is no
longer prevented by turning
off the bus master enable bit <bug number="15524"/>. </add-note></build-id>
<build-id value="3521"><add-note> It is now a compile-time error if a
register field has
no <fun>read</fun> or <fun>write</fun> method. For a register
without fields, it is an error if the register itself has
no <fun>read</fun> or <fun>write</fun> method
<bug number="11350"/>. The DML language has always expected read
and write methods to be present, and the behavior when they are
missing was undefined. The updated DML compiler will now detect
this error in models. Some models might need to be updated, and
the simplest way to add read/write methods that do nothing is
to use the <tt>read_zero</tt> and <tt>ignore_write</tt>
templates, or some other variant such as <tt>read_only</tt>
or <tt>write_only</tt>. </add-note></build-id>
<build-id value="3522"><add-note> A new error message ENTYPE was added for
some cases when the
type of an expression is unknown.
<bug number="12271"/>. </add-note></build-id>
<build-id value="3530"><add-note> Fixed a problem that sometimes made the
compiler crash if a
parameter was given a value of the wrong type
<bug number="12246"/>. </add-note></build-id>
<build-id value="3534"><add-note> Registers inheriting the standard
<tt>ignore</tt> template will no longer
generate attributes and thus not checkpointed
<bug number="16621"/>. </add-note></build-id>
<build-id value="3539"><add-note> The <tt>pci_config_type_1</tt> standard
template no longer
hardcode <tt>header_type.mf</tt> field to 0, to comply with the
PCI standard that allows multi-function bridges
<bug number="16581"/>. </add-note></build-id>
<build-id value="3539"><add-note> Fixed bug where legacy interrupts were
stopped/discarded by PCIe bridge
if interrupt disable bit was set. This bit only affects the bridge
itself, and not interrupts passing through the bridge from the secondary
side <bug number="16711"/>. </add-note></build-id>
<build-id value="3540"><add-note> A bug that made dmlc crash when an
<tt>event</tt> was placed inside
a <tt>connect</tt> has been fixed
<bug number="9388"/>. </add-note></build-id>
<build-id value="3543"><add-note> Common PCI library code has now been ported
to DML 1.2
<bug number="16804"/>. </add-note></build-id>
<build-id value="3544"><add-note> The common PCI library file
<tt>pcie-to-pci.dml</tt> now
supports bridging upstream PCI to PCIE transactions using the
new pci_upstream interface. This is only used if the
<tt>upstream-target</tt> attribute has been set <bug number="16973"/>.
DML 1.2 only. </add-note></build-id>
<build-id value="3546"><add-note> Templates and implementations of the
interfaces <iface>pci_bridge</iface>
and <iface>pci_interrupt</iface> now assert that the value for the
interrupt <tt>pin</tt> is in the range 0 to 3. </add-note></build-id>
<build-id value="4000"><add-note> DML 1.0 is now deprecated. An attempt to
compile a DML 1.0 file
results in a warning; this can be suppressed by adding
the <tt>--nowarn=WDEPRECATED</tt> flag
to <tt>dmlc</tt>. </add-note></build-id>
<build-id value="4000"><add-note> The library files
<file>usb-dev-common.dml</file>
and <file>usb-host.dml</file> have been upgraded from DML 1.0 to
DML 1.2. This causes compilation errors in any DML 1.0 device
that imports this file. As a temporary workaround, the versions
of the library files from a Simics 4.4 installation can be
copied into the directory of the device. However, DML 1.0 is
deprecated, so the proper way to solve this problem is to
upgrade the device to DML 1.2. </add-note></build-id>
<build-id value="4000"><add-note> The log messages generated by the
<tt>undocumented</tt> template
changed type from <tt>undefined</tt>
to <tt>spec_violation</tt>. </add-note></build-id>
<build-id value="4005"><add-note> All named banks will now automatically
implement the
<iface>int_register</iface> interface, regardless of if they are
mappable or not <bug number="15852"/>. </add-note></build-id>
<build-id value="4008"><add-note> The <tt>read_only</tt> and
<tt>write_only</tt> templates are now working
as expected for registers with fields
<bug number="16355"/>. Non-allocated fields must implement
a <fun>get</fun> method in order to successfully use
the <tt>read_only</tt> template, or get spec-violations for write access
even if the value has not changed. </add-note></build-id>
<build-id value="4009"><add-note> Added <tt>--werror</tt> to dmlc to turn all
warnings into errors
<bug number="14438"/>. </add-note></build-id>
<build-id value="4009"><add-note> A new warning type WUNUSEDDEFAULT was added
in order to warn
when an object is not referenced anywhere but it matches a name of
an object automatically referenced in another scope. This is the
same as WUNUSED but only for known common errors such as adding an
<fun>after_write</fun> method to a field. The warning type will
never be emitted if WUNUSED is enabled
<bug number="17312"/>. </add-note></build-id>
<build-id value="4009"><add-note> The <tt>aer_cap_control.ece</tt> field of
the advanced error reporting
capability template is now <tt>read_write</tt> according to PCIe
specification <bug number="17323"/>. </add-note></build-id>
<build-id value="4011"><add-note> Split
<tt>defining_pci_express_capability</tt> template into multiple
templates for device, link, slot and root capabilities
<bug number="17382"/>. </add-note></build-id>
<build-id value="4012"><add-note> A DML compiler crash was fixed, occurring
when using cast() expressions
in some circumstances <bug number="17420"/>. </add-note></build-id>
<build-id value="4012"><add-note> Using parameters overlapping = 1 and
partial = false but making
a partial write would cause all registers following the one
written to in the bank to be overwritten, this is now fixed.
<bug number="17423"/>. </add-note></build-id>
<build-id value="4014"><add-note> Allow sizeof on layout members <bug
number="8765"/>. </add-note></build-id>
<build-id value="4017"><add-note> Fixed a DML compiler crash, occurring when
documentation strings
contain the <tt>%</tt> character
<bug number="17420"/>. </add-note></build-id>
<build-id value="4024"><add-note> Give a warning when a variable declared in
a method's top-level
scope shadows a parameter <bug number="17314"/>. </add-note></build-id>
<build-id value="4024"><add-note> When a device posts an event with non-NULL
user data, but no
<fun>get_event_info</fun> method has been defined, an error log message
will now be logged when the event is saved to a checkpoint. This allow
some device models to catch indeterministic behavior sooner
<bug number="17699"/>. </add-note></build-id>
<build-id value="4025"><add-note> When an device object is created,
<fun>init()</fun> is now
called before <fun>hard_reset()</fun> method. </add-note></build-id>
<build-id value="4025"><add-note> Fix a bug in how nested register arrays are
mapped over
the <iface>io_memory</iface> interface
<bug number="17729"/>. </add-note></build-id>
<build-id value="4026"><add-note> Do not cause an internal compiler error
(ICE) if a variable is
declared with a type of "void" or "function"
<bug number="17271"/>. </add-note></build-id>
<build-id value="4031"><add-note> Gracefully signal errors instead of
crashing on some invalid
uses of arrays <bug number="17913"/>. </add-note></build-id>
<build-id value="4032"><add-note> The standard library is now pre-parsed,
which drastically
improves the compile time of small DML files
<bug number="17707"/>.</add-note></build-id>
<build-id value="4034"><add-note> Generate the correct C code for simple
assignments with nested
layout objects <bug number="15295"/>. </add-note></build-id>
<build-id value="4041"><add-note> Gracefully signal errors instead of
crashing on the use of
"undefined" log type with Simics API version 4.6 or later
<bug number="18204"/>. </add-note></build-id>
<build-id value="4042"><add-note> Fix a bug in the attribute setter function
so that the parameter
can be referenced as a lvalue if the attribute itself is an
array object <bug number="18234"/>. </add-note></build-id>
<build-id value="4049"><add-note> In some places where previously only a
single string literal was
allowed, now multiple string literals concatenated with the '+' operator
are permitted: the format string in <tt>log</tt> statements, the string
in <tt>error</tt> statements and the description string in object
declarations (registers, banks etc). In addition, the <tt>log</tt> and
<tt>error</tt> statement strings can be surrounded by round brackets
<bug number="3328"/>. Examples:
<tt>log "info": ("x = %d" + " y = %d"), $x, $y;</tt>
<tt>error "I saw" + " something nasty";</tt>
<tt>register r1 size 4 @ 0 "some" +
" description";</tt> </add-note></build-id>
<build-id value="4056"><add-note> PCI library updated to provide improved
register and field definitions
for PCIe 3.0 capabilities and support new features like Resizable BAR
Capability. Also makes it possible to disable writes to (some)
unimplemented bits. </add-note></build-id>
<build-id value="4062"><add-note> Generate the correct error message with
source code location
when an index variable is used as an expression in an incorrect
context <bug number="18722"/>. </add-note></build-id>
<build-id value="4062"><add-note> Fix a bug where a bad member selection
expression, if appeared
as the control expression of a switch statement, cause the
compiler to crash with an internal compiler error (ICE)
<bug number="18683"/>. </add-note></build-id>
<build-id value="4063"><add-note> An error in the internal <tt>MASK</tt>
macro used in the
generated C code was corrected <bug number="18848"/>. It may
have caused some C compilation warnings. A similar warning was
quelled in the <tt>VADD</tt> macro. </add-note></build-id>
<build-id value="4065"><add-note> The C code generated when using <tt>partial
= true</tt> should
no longer cause a gcc sign-compare warning when enabled
<bug number="18888"/>. </add-note></build-id>
<build-id value="4071"><add-note> PCI/PCIe: bridges based on pci-bridge.dml
now implements their own
interrupt handling code for incoming interrupts to be forwarded from the
secondary bus to the primary. This is required in order to ignore the
interrupt disable and interrupt status bits used by the common interrupt
handling code provided by pci-common.dml for generic devices/EPs. The
common code should only be used for interrupts originating from the
bridge (device) itself, where the disable/status bits are applicable
<bug number="16711"/>. </add-note></build-id>
<build-id value="4072"><add-note> PCI/PCI: The type field of
<tt>memory_base_address_64</tt> now correctly
indicate 32/64-bit access depending on the return value
of <fun>pci_bar_is_64</fun> function. Default is true, i.e. BAR is 64-bit
<bug number="19017"/>. </add-note></build-id>
<build-id value="4072"><add-note> A few sign-compare warnings were eliminated
from the PCI libraries
<bug number="18984"/>. </add-note></build-id>
<build-id value="4078"><add-note> Do not crash on evaluation of expressions
that should not depend
on the index variable of array objects, for example, the
expression of the <tt>size</tt> parameter of a register array
<bug number="18308"/>. </add-note></build-id>
<build-id value="4085"><add-note> The documentation for the
<tt>configuration</tt> parameter
of <em>connect</em> was updated to clarify its usage for array
objects. See section 5.1.9 of <cite>Model Builder - DML
1.2</cite> <bug number="19063"/>. </add-note></build-id>
<build-id value="4085"><add-note> The documentation for the
<tt>allocate_type</tt> parameter
of <em>attribute</em> was updated to explicitly list the types
that it supports automatically. See section 5.1.4
of <cite>Model Builder - DML 1.2</cite>
<bug number="17815"/>. </add-note></build-id>
<build-id value="4085"><add-note> Added two new templates:
<tt>read_unimplemented</tt>
and <tt>write_unimplemented</tt>, that work just
like <tt>unimplemented</tt> template but only for the given type of
access <bug number="14762"/>. </add-note></build-id>
<build-id value="4094"><add-note> PCI/PCIe: when device is disconnected from
the bus, the
new <fun>pci_bus_disconnected</fun> method will be invoked making sure
the device is reset and all its BAR mappings are removed from memory
space <bug number="19702"/>. </add-note></build-id>
<build-id value="4094"><add-note> PCI/PCIe: interrupt status bit is now
always set when the device tries to
raise an interrupt <bug number="19613"/>. The bit is cleared once all
interrupts have been lowered. The interrupt disable bit does not affect
the status bit, it only affects the interrupt signal. The status bit is
only used for interrupts originating from the
device itself. </add-note></build-id>
<build-id value="4095"><add-note> A bug was fixed which prevented DMLC from
detecting register
offset overlappings for certain cases
<bug number="19713"/>. </add-note></build-id>
<build-id value="4097"><add-note> Added documentation for the mapping_setup
attribute <bug number="17182"/>. </add-note></build-id>
<build-id value="4500"><add-note> The format of the generated XML file that
contains register
information has been changed. Among others, the most noticeable
change is that each register definition now generates only one
element. Instances inside register arrays are represented by
their offsets as an attribute of the corresponding register
element. This helps reducing the size of the generated XML file
dramatically for device models that contain a large number of
register arrays <bug number="8737"/>. Another major change is
that the XML file now only contains information of memory-mapped
registers, i.e., information of internal registers that do not
have their <tt>offset</tt> parameters defined are no longer
generated in the XML file. </add-note></build-id>
<build-id value="4500"><add-note> A new bank parameter,
<tt>miss_pattern</tt>, was added to allow
accesses where some bytes do not correspond to any mapped
registers without generating an error
<bug number="18674"/>. </add-note></build-id>
<build-id value="4504"><add-note> The <tt>checkreserved</tt> template now
gives a compile time
error if applied to a field as this template is only applicable
to registers <bug number="17343"/>. </add-note></build-id>
<build-id value="4505"><add-note> Change the configuration of the secondary
bus connect to be required, as
the secondary bus should always be part of the bridge
<bug number="19705"/>. </add-note></build-id>
<build-id value="4506"><add-note> The string literal syntax has been
specified more precisely, and
now only includes escapes for double quote, backslash, newline,
carriage return, tab and backspace (<tt>\"</tt>, <tt>\\</tt>,
<tt>\n</tt>, <tt>\r</tt>, <tt>\t</tt> and <tt>\b</tt>), as well
as arbitrary bytes in hexadecimal notation (<tt>\xHH</tt>).
Previously, most escape sequences had unpredictable effects;
backslashes and carriage returns could not be included in
strings at all <bug number="19250"/>. </add-note></build-id>
<build-id value="4506"><add-note> Fixed a regression in pci-bridge.dml based
models that does not connect
the <tt>secondary_bus</tt> at instantiation <bug number="19705"/>. The
regression caused these configuration to fail as the information from the
pci-bus was never retrieved after <tt>secondary_bus</tt> attribute was
set. </add-note></build-id>
<build-id value="4506"><add-note> Add register offset information in access
log messages
<bug number="19469"/>. </add-note></build-id>
<build-id value="4507"><add-note> DML now supports the definition of bank
arrays. For more details,
please refers to the <cite>Language Reference Manual - DML 1.2 </cite>
<bug number="10032"/>. </add-note></build-id>
<build-id value="4507"><add-note> Fixed a bug of the compiler that
incorrectly interprets indexed
register reference as an integer value when the expression is
evaluated statically <bug number="19876"/>. </add-note></build-id>
<build-id value="4507"><add-note> DML 1.0 is no longer supported. Code
written in DML 1.0 has to
be manually converted into DML 1.2. Please refer to
the <cite>Model Builder - DML 1.2</cite> Reference Manual for
how to do the 1.0 -> 1.2 conversion. </add-note></build-id>
<build-id value="4509"><add-note> There is now a syntax for single-quoted
character literals, yielding
an integer value. Only printable ASCII characters and the escape
sequences <tt>\'</tt>, <tt>\\</tt>, <tt>\n</tt>, <tt>\r</tt>,
<tt>\t</tt> and <tt>\b</tt> are allowed
<bug number="5616"/>. </add-note></build-id>
<build-id value="4512"><add-note> PCI/PCIe: Fixed incorrect offset of
<tt>pending_bits</tt> register array
in the MSI-X PBA templates, resolving a compilation error that occurs
when the number of interrupt vectors is larger than 64
<bug number="20069"/>. </add-note></build-id>
<build-id value="4514"><add-note> Bit slicing expressions that produce zero
bits are now treated as errors
the same way as of negative-sized bitslices. The behavior is undefined
and will trigger a compilation error if the range of the resulting
bitslice is known at compile time <bug number="500453"/>,
<bug number="11464"/>. </add-note></build-id>
<build-id value="4514"><add-note> The default value of the bank parameter
<tt>pci_miss_pattern</tt> has
been re-defined from 0 to "undefined" to maintain backward compatibility
with code compiled with the 4.6 API
<bug number="20125"/>. </add-note></build-id>
<build-id value="4517"><add-note> A new warning, <tt>WNDOCRA</tt>, will warn
for required
attributes or connectors that are undocumented
<bug number="16569"/>. </add-note></build-id>
<build-id value="4517"><add-note> The old PCI library has been fully reverted
to make it identical to the
4.6 library <bug number="20308"/>. The following changes have been
reverted and are now only available using the new PCI library
from <tt>dml-lib</tt> module:
<ul>
<li>The definition of the vga16d field in the bridge_control register,
used by pci-bridge.dml when creating the VGA IO mappings across the
bridge between the primary and secondary bus. As the bit is missing,
VGA 16-bit decode is not fully supported <bug number="20302"/>.</li>
<li>The secondary_bus connect-attribute should be required
<bug number="19705"/>. In 4.6 it is optional, allowing some sort of
hot-plugging of the secondary bus. This is illogical and should not
be exploited.</li>
<li>The interrupt routing for legacy interrupts has been improved in
4.8 w.r.t. bridges, allowing proper sharing of interrupts
<bug number="19470"/>.</li>
<li>To support access at undefined addresses in configuration space,
the new miss_pattern feature in 4.8 was made available to the old PCI
library as well but defined as disabled by default. Setting
<tt>pci_miss_pattern</tt> parameter to 0 will not work in the old
library after reverting this change. Users must now explicitly add
the <tt>miss_pattern</tt> parameter or use the new library.</li>
</ul> </add-note></build-id>
<build-id value="4519"><add-note> Looping over pre-defined register lists in
a bank array would be
expanded to registers in the whole array instead of just the
indexed bank. This has been fixed
<bug number="20328"/>. </add-note></build-id>
<build-id value="4522"><add-note> The compiler will now emit an error when
trying to compile or
import a DML 1.0 file <bug number="19860"/>. </add-note></build-id>
<build-id value="4523"><add-note> Report an error instead of crashing when
two <em>data</em>
objects are declared with the same name in the same scope
<bug number="500185"/>. </add-note></build-id>
<build-id value="4525"><add-note> It is now possible to use
<em>constant</em>s to specify the size
of arrays at the top level <bug number="500277"/>,
<bug number="6030"/>. Example:
<pre>
constant N = 8;
struct s {
uint32 arr[N];
...
}
</pre> </add-note></build-id>
<build-id value="4530"><add-note> DMLC now automatically generates the
documentation of the required
interfaces for each of <em>connect</em> object. </add-note></build-id>
<build-id value="4531"><add-note> A new attribute "bitorder" is added to the
device element of
the generated XML file <bug number="500861"/>. </add-note></build-id>
<build-id value="4532"><add-note> An incompatibility was introduced, causing
DMLC to break when
used together with Simics-Base 4.8.20 or older. The
incompatibility is bidirectional; DMLC from Model-Builder 4.8.14
or older does not work together with new versions of the
Simics-Base package <bug number="300067"/>
<bug number="501031"/>. </add-note></build-id>
<build-id value="4532"><add-note> Error and warning messages from DMLC now
include column numbers
in addition to line numbers. </add-note></build-id>
<build-id value="4532"><add-note> Fixed a bug that caused DMLC to crash when
the <cmd>-g</cmd>
parameter is passed <bug number="500914"/>. As part of the fix,
an obscure undocumented language feature (passing constants in
method output parameters) has been removed. </add-note></build-id>
<build-id value="4535"><add-note> Fixed an incompatibility with old versions
of Extension-Builder:
DMLC from Model-Builder 4.8.15 did not work together with
Extension-Builder 4.8.7 or older <bug number="300067"/>
<bug number="501031"/>. </add-note></build-id>
<build-id value="4539"><add-note> Error and warning messages that are
triggered from within
template are now presented along with the <tt>is</tt> statements
leading to template instantiation
<bug number="20809"/>. </add-note></build-id>
<build-id value="4539"><add-note> Compile-time warnings will now be emitted
when a <fun>read</fun>
or <fun>write</fun> method in a register is overridden but not
used. This can typically happen in a register with fields, or in
an unmapped register.
The warning message indicates a model bug, where the developer
intended the <fun>read</fun> or <fun>write</fun> method to be
called automatically on register accesses. In some rare cases it
is nontrivial to fix this; one example is when a <fun>read</fun>
or <fun>write</fun> method is defined by a template which is
applied both to registers with and without fields. In such
cases, the warning can be suppressed by
passing <tt>--nowarn=WUNUSEDDEFAULT</tt> to DMLC
<bug number="500203"/>. </add-note></build-id>
<build-id value="4539"><add-note> The <tt>write_only</tt> template will now
emit a compile-time
warning when applied to a field. The template works just like
the <tt>read_zero</tt> template on fields, and "read zero"
describes much better what the template does in this case.
Therefore, we recommend that existing uses
of <tt>write_only</tt> on fields are replaced
with <tt>read_zero</tt> <bug number="20283"/>.</add-note></build-id>
<build-id value="4539"><add-note> The <tt>ignore_write</tt> template will now
ignore the write
also when applied to a register with fields