The following is a list of changes since the initial Simics 6 release.
NAMESPACE parameter
to simics_add_test function.gmake-to-cmake converter
(bug #SIMICS-21798).list-pcie-hierarchies
now uses the global simics table border style.WLOGMIXUP by default below Simics API version 7 is now
controlled by the compatibility feature suppress_WLOGMIXUP.
This is in order to increase visibility of the API-dependent behaviour,
and to provide migration documentation about it.
As a consequence, WLOGMIXUP can be enabled below Simics API
version 7 by passing either --warn=WLOGMIXUP (as before) or
--no-compat=suppress_WLOGMIXUP to DMLC.pcie_link_training and pcie_phy templates to the library.
Endpoints and upstream ports instantiate pcie_phy, while
Downstream and Root Ports instantiate pcie_link_training.
pcie_link_training provides the object with the capabilities to
initiate link training. pcie_phyAdds a port phy to a device which
by default handles transactions with the atom
pcie_link_negotiation. The transaction handler can be expanded to
handle custom atoms that are related to the physical layer.--log-level argument to change default
log-level.CMAKE_OBJECT_PATH_MAX to 1000
by default in the project top-level config. This suppresses the warning CMake
emits on Windows if paths are too long.list-pcie-hierarchies
to list PCIe hierarchies in platforms.
PCIE_DP_Type_RP used for
param dp_type in the PCI Express capability template exp_capability.
pcie_root_port
template into separate template for each PCIe Port type
(pcie_root_port, pcie_downstream_port and
pcie_upstream_port). The pcie_root_port can still be
used as before.
access function is concerned
(bug #SIMICS-21922). systemc-checkpoint.mk. sim->automatic_cell_partition=FALSE
would lead to an assertion on instantiation of an x2apic object (bug #HSD-18036198888).
MallocAllocator
from SystemC Library into C++ Device API v2 and hence from namespace
simics::systemc into namespace simics (bug #SIMICS-18622).
simics_add_dead_methods_check() that adds a post build command that
checks if a target contains dead DML methods.extra-version data field from
the packageinfo files. Simics base product packages will
include the build date in this field.-all flag works as intended
(bug #SIMICS-20013).
"help Core_At_Exit"
command - could be truncated (bug #SIMICS-21845).
link
goal_latency was set to zero (bug #SIMICS-21838).| Updated type | Minimum Value | Maximum Value |
| int8_t | sint8_t.min | uint8_t.max |
| int16_t | sint16_t.min | uint16_t.max |
| int32_t | sint32_t.min | uint32_t.max |
| int64_t | sint64_t.min | uint64_t.max |
SharedMemoryBank. unsigned* commands
to calculated unsigned values for fixed sizes.
simics -v output now includes
the extra-version data field from the packageinfo
files. Simics base product packages will include the build date in
this field.tlm2simics::transaction gasket.simics_test_suite_begin() and simics_test_suite_end()
macros to create a Simics test suite, providing automated clean-up of the
scratch folder.pci_express interface
related gaskets.Connect instance.SharedMemoryBank which can be used to share memory with other
banks.simics-gui failed to start was fixed. This fixes
the regression that was introduced in Simics-Base 6.0.173
(bug #HSD-14020677718).
config_bank template:
added function message.send_custom in order for devices to
append custom atoms to the PCIe messages sent upstream..eml files has been removed.
echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoid
Notice that this can conflict with the VMP driver, also making use of
performance counters.
simics_find_and_load_modules()
as simics_find_and_add_modules()simics_find_and_add_modules(), making it possible to scan in
project, in packages or both (bug #SIMICS-21631).simics_add_test(). NAME to rename a test and PYTEST to run
with pytest as test driver.shared methods would always use the device's configuration object
as the log object instead of the configuration object of the nearest
enclosing device, port, bank or
subdevice (bug #SIMICS-11346).
This fix is only enabled by default with Simics API version 7 or above.
With version 6 or below it must be explicitly enabled by passing
--no-compat=shared_logs_on_device to DMLC.--no-compat
to selectively disable compatibility features. In
particular, --no-compat=port_proxy_ifaces disables
generation of interface trampolines, which can speed up
compilation of devices with huge arrays of ports. The
option --help-no-compat lists all features that can be
disabled.WriteOnlyField (bug #HSD-14020422714)simics_add_test() with
more functionality by passing optional parameters to set ENV, CWD and
SYS_PATH. It is also possible to pass the full path to the test and not just
the test name.NO_DEFAULT_PATH by
default to find_package() when locating the Simics package. This
prevents using a Simics.cmake from some other location not connected to the
Simics Base package currently used by the project.--log-file is no longer
deprecated.uefi, tos and tos_mem.transaction interface.
The multi function endpoint will now receive messages with PCIe atoms attached.
For single function legacy devices this was already supported
by including port message_port in the device object.
See template providing_pcie_message_port as reference.
The new template pcie_message_handler is intended to be used
by legacy multi function devices attached to
pcie-downstream-port-legacy.get_bus_address in interface
pci_bus now works for legacy multifunction devices attached
to pcie-downstream-port-legacy.Poll snooper to
an abstract base class.FieldValue,
similar to RegisterValue but for fields.Latest: Snooper constructor arguments are now
given as keyword arguments instead of a list, and yielded values
are objects with corresponding value members instead of a
tuple. Thus, code like:
await wait(Filter(lambda vals: vals[0] == 1 and vals[1] == 2,
Latest([X(), Y()])))
can be rewritten as:
await wait(Filter(lambda val: val.x == 1 and val.y == 2,
Latest(x=X(), y=Y())))
SIMICS_ENABLE_TESTS_FROM_PACKAGESsimics_copy_python_files
function to copy files from other modules or targets into the current
module (bug #SIMICS-21532).--warn=WLOGMIXUP to DMLC.-print-register-changes
and -print-old-value, has been added to the instrumentation-tracer-tool.
When -print-register-changes is given tracing of instructions and exceptions
will also include a trace of registers that have changed and their new value.
If -print-old-value is also given the previous value of the changed
registers are also be included in the trace.
-print-opcode has been added
to the instrumentation-tracer-tool. When given or when none of the -print... or
-trace.. flags are given the opcode is output next to any traced
instruction.attr_value_t (bug #HSD-22018912429)InterfaceInfo to the class
ConfClass.simics-api-stubs library, which if used resulted in a
segfault. Unittests should never link directly against
the Simics::C++ target as that would bring in Simics APIs. Instead
they should link against the simics-cc-api::stubbed
target.SIMICS_BUILD_DEPS
as SIMICS_BUILD_DEPS_ROOT to align with definitions used by the
Conan build-deps; see conan/README.md for details.simics_add_test adds
the namespace to each added test. The namespace is now only the module
directory, instead of the relative path between the current project and the
test source path, allowing easier interaction with test properties and setups
where the tests are not located within the project where the tests are run
from.CMAKE_C_COMPILER_LAUNCHER through the USE_CCACHE
option resulting in failure to enable ccache.set_source_files_properties on the .dml
filepcie_destination_segment atom has been added.
Used for peer to peer traffic across PCIe hierarchies.
attribute-name
argument (bug #SIMICS-19945).-show-port-classes can be used to include those
(bug #SIMICS-20494).commands has been split up into pieces, so some
symbols has been removed from it. Import from the
module sim_commands module instead, which includes all
pieces.-hide-port-objects flag to
the list-objects command is now deprecated. Its behaviour
is now the default. The new -show-port-objects flag can be used to
obtain the previous default.craff utility
can now produce files in the VHDX file format: the --vhdx option
was added (bug #HSD-18032803812).RegistersExt
which will improve searching of registers when debugging with
Intel® System Debugger (bug #HSD-18032926036).
tcf-device-registers
(bug #HSD-18032926147).long or size_t type (via saved
variables or arguments of after statements) would lead
to an internal compiler error
(bug #SIMICS-21424).after
statement, called immediate after. Syntax is
after: callback(1, false). An immediate after will delay the call
to the specified method until all current entries into devices on the call
stack have been completed, and the simulation of the current
processor would otherwise be ready to move onto the next cycle
(bug #SIMICS-20379).I2C link v1 is
deprecated, use the I2C link v2 instead
(bug #SIMINT-1532). Root port extension
field in DPC capability.ppdaib (PTM Propagation Delay Adaptation Interpretation B)
in PCIe express link capability.emde (Extended Message Data Enable)
and emdc (Extended Message Data Capable) for the MSI capability.pcie_base_address,
which is used to model Base Address Registers (BARs),
no longer overrides method write_unmapped_bits which was
added to avoid spec-viol messages during BAR size determination.
Now method write_register
masks the bits that determines the BAR size, keeping the same functional
behaviour (bug #SIMICS-21400).pcie_root_port
now adds a new upstream message translation port upstream_message_router which
routes incoming upstream messages according to atom pcie_msg_route.
Note for the pcie_bridge template, if similar functionality is desired
the upstream_message_router port has to be added manually to the model.
dev3_capability enabled in PCIe 6
it is now possible to capture segment number atom pcie_destination_segment
during configuration write requests.
The captured segment number is then used for Route By ID messages to be routed across
PCIe hierarchies (segments) if upstream message segment atom pcie_destination_segment
does not match captured segment.doe_capability template is now
functional. It currently supports the DOE Discovery protocol. Vendor
defined protocols can be implemented with the doe_protocol
template.--target
and --preset for generating skeletons of targets and
presets.
gnu++20.IFACE_FILES
in the Makefile. SystemC modules no longer add --no-allow-shlib-undefined
when IFACE_FILES is present.simics2tlm::transaction gasket.
It can be used for updating the TLM transaction before sending it over to the
SystemC side.tlm2simics::transaction gasket. It can be used for updating the Simics
transaction atoms before sending it to the Simics side.%simics% markers instead of
being converted to absolute paths../simics foo/target
--preset foo/preset --preset
my-preset.yml (bug #HSD-22018344599).-verbose
with the list-targets or list-presets
commands, the command will still display a list even if some of the
targets have parse errors.required flag on parameters have changed
to true.uefi-fw-tracker-risc-v
(enable-tech-preview uefi-fw-tracker-risc-v) before running
detect-parameters
(<uefi_fw_tracker_comp>.detect-parameters
or <uefi_fw_tracker>.detect-parameters).
project-setup --py-device is now using a proper port object
to model its register bank (bug #SIMICS-20794).mini-python binary now respects long paths if
enabled on the system; in particular, if the registry key
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled
is set to 1, then the binary can run a Python file whose path
exceeds 260 characters
(bug #HSD-22018805048). -tree flag
(bug #SIMICS-21175).-recursive flag to
the list-objects command is now deprecated. Its behaviour
is now the default. The new -local flag can be used to
obtain the previous default
(bug #SIMICS-20839).self_allocated_image_size to class ram.
When attribute image is NIL and the new attribute is non-zero,
the ram instance will create its own image object as a child
with the defined size (bug #SIMICS-17853).
picoseconds argument to
set-time-quantum and <cell>.cpu-switch-time
(bug #SIMICS-19124).
<project>
in the package column for targets or presets in the local
project.formats.cc file directly within the C++ API
library (bug #HSD-13011174281).LIBRARY_OUTPUT_DIRECTORY
target property explicitly for each Simics module instead of indirectly
via CMAKE_LIBRARY_OUTPUT_DIRECTORY cache
variable.x command for
cpus (bug #SIMICS-21313). debug_symbol
expression_type where missing symbol type could cause a crash
(bug #SIMICS-21328).uefi-module-added to the UEFI tracker, which is triggered whenever
a UEFI module is added to the tracker's internal module map. The new attribute
last_added_map can be used to query which module was loaded last.
This attribute is expected to be queried from callbacks registered with the
new notifier.simics_add_sanitizers
has been added. It allows for adding address and undefined behavior
sanitizers to targets that have been created with simics_add_module
simics-asan CMake build
target. It launches Simics in such a way that modules built with ASAN will
run the ASAN logic.notifier_type_t. This notifier type is
triggered in case of changes in the preferences object.
-list-all flag.-only-inbound flag is used (bug #SIMICS-21174).-disassemble flag which results in disassembly of
the current instruction to be included in log
messages.x86-64 but lack the rip
register.new and delete
functions are only overloaded in the DEBUG
build (bug #HSD-22018516749).max/min macros
(bug #HSD-22018512843).simics-gui binary did not start correctly
(bug #HSD-14019547355).third-party-programs.txt with a list of third party
software included in the package.interrupt_subscriber for listening to interrupts.
script_branch.ScriptBranch snooper would misbehave if
the script branch function returns immediately."help notifier:frequency-change"
or simply
"help frequency-change"
(bug #SIMICS-20874).
hook declarations; a
hook is a named object member to which suspended computations may
be attached for execution at a later point. Computations suspended on a
hook are detached and executed through the send_now() operation
of the hook, which can also provide data for use by the resumed
computations.
Currently, the only form of computations that can be suspended on hooks
are single method calls. This is done via the after statement,
which has been extended to permit this.spec_viol and error logging to be performed with
incorrect log level and log groups.spec_viol and error logging to be performed with
incorrect log level and log groups.bin/create-packages. It creates packages based on
a simple JSON specification format. The script and file format
are still in tech preview, and documented in
the creating-packages document. bin/create-modcache is added, intended to
replace the bin/gen-modcache script. The command-line
arguments of the new script are more consistent with other
scripts. The old script will remain for some time to ease
transition. DeviceAttribute and RegisterValue
snoopers.ldconfig inside the linux64/sys/lib in every
package, not only in Simics-Base (bug #HSD-15013457471).spec_viol and error logging to be performed with
incorrect log level and log groups.Register_Read and
Register_Write.Sim_Set_Illegal_Type and Sim_Set_Interface_Not_Found
when setting a Simics attribute.Simics::Python compared to the Simics GNU Make setup. This fixes
a compilation error when using certain GCC compilers.simics.sys.path and also set __file__ correctly
(bug #SIMICS-21046).
memory_space interface instead of
the access_simple_inq of the interface. This restores
the behavior that was present before Simics Base 6.0.163. The change makes
the load-intel-obj command work with objects
that don't implement the access_simple_inq method
of the memory_space interface.tcf-device-registers
which must be set before creating the TCF object
(bug #HSD-18027548445).--coverity now suppresses a false
positive that the COPY_PASTE_ERROR checker reports in
dml-builtins.dml.after statement.SIMLINK_send_message) has been improved, and
delivered messages do not have as large of a performance impact on the
simulation (bug #HSD-18015335031).pcie_version
is set to 6.0 or higher.pcie_version is set to 6.0 or higher.yes to USE_CC_API. Now the only supported values
are either 1 or 2. In upcoming Simics 7 the support
for v1 will be removed.params.list now
returns a plain dict/tree as the first return
value.params.describe now
returns a dict instead of a string in YAML format.USE_CC_MEMORY_MANAGEMENT
to no in order to use a custom memory
allocator.PYTHONNOUSERSITE and PYTHONVERBOSE
to 1.
use_io_memory=false in a DML 1.4 file is imported from
a DML 1.2 device, using the `dml12-compatibility.dml` library,
then a call to the transaction_access method will now
trigger a proper bank access. Also, if a bank uses the
dml12_compat_io_memory_access template, then overrides of
the transaction_access method will be honored. This
simplifies future transition to the Simics 7
API.each
.. in .. expressions
(bug #SIMICS-21044).-yml
flag instead.documentation key in
parameter definitions is now deprecated. Use
the description key instead.-all argument to
the params.save command, for saving not only non-default
values.D=1.std::string_view now.offset for
init method in Field class. The parameter should
use the offset of the field on the containing register. This is an
incompatible change, all invocations of the method need to be
updated.Simics-GDB with
package number 1031. So please install the Simics-GDB
package before starting bin/gdb on Linux or bin\gdb.bat
on Windows.
OperatingMode to OperatingModes
(bug #HSD-18027361607).OperatingModes context property of x86_64 cores
(bug #HSD-18027361607).vnc_server interface is now deprecated. Use
the vnc_server_v2 interface instead, and, if required,
the tcp_connection_info interface on the tcp
sub-object.pci/common.dml
no longer causes the device to implement io_memory.
PCI devices still implement io_memory, as a side-effect
of using the pci_common template.dmwls
fieldpci_multi_function_device interface
were not mapped and unmapped properly.pci_multi_function_device interface
are now considered 'transparent' by the
pcie-downstream-port-legacy, if they are listed in
the pci_devices attribute with device and function
equal to zero.bin/list-targets
script, and the simics -l output now displays the output in
alphabetical order.sim_params can be imported
from simics_start.py
(bug #HSD-14019229098).telnet_connection interface is now deprecated. Use
the telnet_connection_v2 interface instead, and, if required,
the tcp_connection_info interface on the tcp
sub-object.BankInterface to its parent bank.RegisterInterface to its parent register.spec_viol now
instead of info log message.LD_LIBRARY_PATH environment variable
with SIMICS_LD_LIBRARY_PATH if the latter set (even if it is
empty) (bug #HSD-15013235354).use_io_memory parameter of banks is set to false
(bug #SIMICS-20988).use_io_memory parameter of msix_table banks is
set to false (bug #SIMICS-20988).frss
field to be added twice, when PCIe version is 6.pci_multi_function_device interface
were handled differently, compared to how the legacy
pcie-bus handles them.conf_object_t (excluding the mandatory first object
arguments).sloop.create_task. Also added a name parameter
for consistency with asyncio
counterparts.lxml
has been removed from the Simics Base package, for security
reasons (bug #SIMICS-20978).-local flag in
the run-script command.Sim_Notify_Bank_Register_Value_Change notifier is now sent after
rather than before the value of register or field is
updated.-s is used.
int1 type into uint1 in DML 1.4, which better resembles
how the type works in 1.2. method callee(buffer_t buf, bool b) {
...
}
method caller() {
callee({ .len = 4, .data = new uint8[4] }, true);
}
This syntax can't be used for variadic arguments or any argument corresponding to a method parameter declared `inline` (bug #SIMICS-20473).
osa_node_tree_admin_interface is now initialized before
being accessed.new_target
parameter is NULL in Transaction::update_target
method.ref key.-recursive flag was
used.BankInterface; making it possible
to iterate over all mapped registers in the bank. Registers are sorted by
offset.LD_LIBRARY_PATH environment variable, to
avoid conflicts with other software. Instead it uses the environment
variable SIMICS_LD_LIBRARY_PATH in a similar
way.OperatingMode for x86 CPU contexts
(bug #HSD-18027361607).i3c_slave definition.pcie_root_port,
when the templates pcie_endpoint and
pcie_multifunction_endpoint are applied to a subdevice,
the HRESET port now only reset the subdevice, not the entire
device.COMPILE_PYC variable has been changed to 0, so
that by default no .pyc files are
generated.targets/*/*.preset.yml. A
command list-presets has also been
added.advanced
greater than 1.const std::string & now.const std::string &
now.USE_COVERAGE is enabled.simics_add_test
causing it to run Simics from inside the installation and not from inside the
project.simics_add_test now also works on Windows.build-id via cached
variable SIMICS_BUILD_ID.USE_COVERAGE to enable
GCOV during the build.gfx-console
to graphcon.-t is also provided that can truncate the
value to the size to get the previous functionality
(bug #SIMICS-19154).Sim_Notify_Bank_Register_Value_Change in notifier_type_t.
This notifier type is used to notify a value change in a bank register
for a non-DML module.bin/simics and bin/simics.bat now load
Simics as a Python module instead of running
the simics-common binary. Note that this means that
the libsimics-common is no longer linked to the main
binary that is started. The previous behaviour can be obtained by
running bin/simics-old
or bin/simics-old.bat.
--coverity has been added as an
option to DMLC. When used, DMLC will generate Synopsys® Coverity® analysis
annotations to suppress common false positives in generated C code created
from DML 1.4 devices.-g) that caused inline method calls to inline constant
arguments even for parameters not declared inline
(bug #HSD-16019548195).downstream_port template which incorrectly connected
the map_target session variable to the upstream direction,
instead of the downstream direction.pcie_root_port is
applied to a subdevice, the HRESET port of the
subdevice now only resets the subdevice, not the entire
device.message_port template
now only looks for instances of the handling_messages
template on the same level where it is
instantiated.signal methods in
the msi_capability and msix_capability templates
have been renamed to _signal, as they are internal and should
not be used by code outside of the templates.msix_capability template which could cause a pending
MSI to not be signaled, if both enable and mask
were changed in the same write.port.downstream now
implements transaction_translator interface instead
of transaction, making it more transparent and
performant when forwarding accesses to its downstream
targets.pcie-downstream-port
now implements the pcie_port_control interface on the
top-level device. Using this interface is identical to, and
should be preferred over using the interface on
port.downstream. This is kept for legacy compatibility
reasons.pyi files of the core Python modules.-recursive flag to
log breakpoints (bug #SIMICS-19735).saved
variables that caused stack overflow during checkpoint restore
for huge (multi-megabyte) struct types
(bug #HSD-18026246959)..py files instead
of .pyc.ccache.gfx_con interface
crashed when given an empty rectangle
(bug #SIMICS-17995). st_table_size =
-1.num_tables = 0.pcie-downstream-port-legacy now supports sending
messages, either via the legacy pci_express interface
or via the transaction interface. Legacy endpoints can
receive messages either via transaction on the
port.pcie_message port or via the pci_express
interface.dev_util.VAL to the write method of
registers created by the bank_regs
function (bug #HSD-22016538841).file, u8 etc.code-type key is now calculated from the file specified
by the script key, if set.advanced tag to
parameters, used to indicate if the parameter should be visible by
default in a GUI and similar.libffi was used by wxPython
(bug #HSD-13010484222).sys.path in Simics Python to allow importing modules from the
current directory (bug #SIMICS-20403).
interface macro, defined by windows.h
(bug #HSD-15012582368).README.md located in
src/extensions/async-bridge.pip and setuptools, so that pip
can be used with mini-python
(bug #HSD-14018026828).MSVC_VERSION environment variable. It is no longer a
requirement to define MSVC_VERSION prior to invoking the build
script and the build can thus run from either 2015 or 2022 build
environments.-
(bug #SIMICS-20279).libffi was used by wxPython.[host]/sys/lib-py3
to [host]/sys/lib.[host]/bin/py3
to [host]/bin.i2c_master_v2 and
i2c_slave_v2 to be implemented by the device object
itself.CommandLine service was used and channel disconnected. This
bug was introduced with the recent updates to the CommandLine
service.init_val has been
introduced to the attribute templates bool_attr,
uint64_attr, int64_attr and double_attr. These
templates now also provide a default init() implementation
that leverages init_val in order to initialize the val
variable provided by the template (bug #SIMICS-20108).
NULL is now considered a constant
expression, and equalities between NULL and other constant
expressions of pointer type (in particular, string literals) are now also
considered constant.connect,
attribute, and register objects has been greatly
optimized, reducing the compilation times of models that feature large
numbers of such objects (bug #SIMICS-6271). A consequence of this
change is that errors in the get_attribute(),
set_attribute(), set(), and get() methods of
such objects are always reported by the compiler, even if the
configuration parameter is defined to be "none".
register_info interface
for banks now provide unique names for each field in an array
(bug #SIMICS-18244)..len on template
type sequences could only be used with direct each-in
expressions (bug #SIMICS-20278).Memory wrapper. A read of size 0 is always allowed,
regardless of address.-wno-deprecated. If Simics is started
with -werror then the deprecation warnings result in Python
exceptions (bug #SIMICS-20274).SIMICS_PYTHONWARNINGS environment
variable. The supported usage is the simple all warning
unconditional override described
at https://docs.python.org/3/using/cmdline.html#envvar-PYTHONWARNINGS.BOOST_LIB_PATH has been
removed from generic build-rules as Boost libs are not required by default
anymore. If needed by a module it can be added explicitly
via SYSTEMC_BOOST_LDFLAGS flag in the module's
Makefile.t are now included in the output
of dir(t). This means that it's possible, for example,
to tab-complete on these atoms in a
transaction.set-debugger-contexts. This command allows controlling what
Simics objects there should be debug contexts for in the Simics
debugger.Int1Exception can now be planted without having to have the
extra (disables VMP) in the type string.CommandLine service can now
handle multiple client connections. Each client will get it's own Simics
console (bug #SIMICS-18619).object, even if object is not an
ancestor of the template (bug #SIMICS-19950).map_target_t
pointer mt now instead use the name map_target, to
be consistent with the map_target template in
utility.dml. The mt name is still available,
as an alias of map_targetmap_target_t
pointer mt now instead use the name map_target, to
be consistent with the map_target template in
utility.dml. The mt name is still available,
as an alias of map_targetrom_subobj
template, used by the defining_expansion_rom template. The bug
caused the image attribute of the rom subobject to be set
to NULL, resulting in an unusable expansion
rom.config_bank template:
issue_transaction,
memory.write,
memory.read,
memory.write_bytes,
memory.read_bytes,
message.send_bytes, and
message.send. These functions now send the transaction to the
upstream_target map_target connect.map_target template from
utility.dmlbank_regs register
objects.--disable-maintainer-modelibexpat library
has been upgraded to
version 2.5.0. map_target_t
fields obj, port and target are now
available as read-only attributes in Python.map_target_t or a conf_object_t as the first
argument.-g
(bug #SIMICS-20200).set method in
the map_target template can now be overridden, to
add extra behavior before and after the attribute
is set.conf_space
(bug #HSD-22016040298).port.conf_translator
has been renamed to impl.conf_to_cfg to clearly show
that it is an internal object..pyc files and updates to
valid Python 3.9 code.targets prefix.session/saved variables initialized to values of
template types could cause internal compiler errors or invalid generated
C (bug #SIMICS-20145).AbstractRegister/Register_LE or
through the bank_regs() function:
reg.write(READ, fieldname=value).
Previously, READ was implicit. The
shorthand reg.fieldname = value
is now deprecated.reg.field.fieldname.read(); the
shorthand reg.fieldname is deprecated.bank_regs(), but will remain for some time
in AbstractRegister and its subclasses.
zlib library has been upgraded to
1.2.13.BOOST_INC_PATH and BOOST_LIB_PATH
take precedence over BOOST_PREFIX now.translator or
transaction_translator interface
(bug #SIMICS-20026).saved
variables (bug #SIMICS-19422)Memory, Dev,
Iface, iface, and all their subclasses, have been
deprecated, and moved to
dev_util_internal.py.Memory class has been
deprecated and replaced by the Simics class sparse-memory.
The Memory class now provides a backwards-compatible
interface to an instance of this new class. The test
argument is no longer supported.psutil module.ipyxact module.targets.code-type key now
defaults to simics if the file has
extension .simics or .include and it defaults
to py if the file has extension .py
or .yml.description key instead of
the desc key.hasattr on the params object in
Python.EthernetLinkDownConnector connector. To make this possible,
the target link has been renamed from target to link and the remote connection to
be optional so the system can setup up the connection after component
instantiation.simics_add_test function,
allowing Simics modules to add their tests via CMake to be run via
CTest. Added include(CTest) to the root of the project template to
enable CTest testing by default .toc.json..md files to link to the resulting html file.use_standard_access_templates
into use_standard_access_templates and use_standard_write_templates
the purpose is to allow write access for IP's with custom register interfaces.
Lane Equalization Control
vector registers.transaction interface for
pcie_config bank instead of the io_memory
interface.debug_symbol interface will no longer return any
duplicate symbol names.toc.json are now relative to the directory containing toc.json. With this change you can add resource directories using relative paths to refer to other directories in the same repository as the document and have it work no matter where the repository is checked out.f in the
vpd_capability template.max_link_width from the lmar and
pl32g capability templates.pl16g and pl32g
capability templates.-with-class-name has been
added to the list-objects command with -tree. That will
add class name next to the name for all non port objects in the tree
(bug #HSD-14017471599)./dev/stdin,0,1234
(bug #HSD-14015387082).session/saved variables:
template t { }
group g is t;
saved t s = cast(g, t);
project-packager
script now filters out .pyc files and __pycache__
directories from the generated packages
(bug #SIMICS-19627).new_table_command(), have two new
arguments; max_table_width and -ignore-column-widths.
bin/debug-simics script has
been deprecated and will be removed in Simics 7. Use bin/gdb
script instead (bug #SIMICS-19350).#line directives that caused problems in code
coverage reports (bug #HSD-18024044100).... syntax
(bug #SIMICS-18705). Members not explicitly initialized are
zero-initialized. For example, the following is now supported:
local struct { int value; bool valid; } x = {.valid = false, ...}
default can now be called within
destroy() without causing an internal compiler error
(bug #SIMICS-19598).processor_endian in order for magic-pipe to
have the proper dynamic data endianness. This resolves
(bug #SIMINT-1405).PciDeviceSimicsAdapter.riscv_wg_wid atom have been added. See the
header file simics/arch/riscv.h.unmapped_read and
unmapped_write methods of the bank, instead of
io_memory_access or transaction_access. This
makes it easier to override the default behaviour; however, if a
model suppresses logging by providing a local alternative
implementation of the *_access methods, and that
implementation still calls unmapped_read
or unmapped_write, then that model will no longer
suppress logging.Bitfield class. This allows partial patching of bitfield values,
like new_value = bf.value(old_value, some_field=0x31).
Bitfield.value and AbstractRegister.write
to also cover field arrays. For
instance, reg.write(f=[10,20]) assigns 10 to the field
named "f[0]" and 20 to the field
named "f[1]". gen_cpp_interfaces.py program causing some generated
interface headers to be broken
(bug #HSD-22015549876).vhdxlib.h required when building the craff
binary is now included in Simics-Base
(bug #HSD-22015617807).map_obj parameter
in the type_1_base_address_template default. This
allows the type_1_bank template to be used in non-standard
configurations, without a downstream port.memory-space interface but not
the transaction interface
(bug #HSD-18023044934).Persistent and Internal under
Attr column when appropriate.Disassembly
services so that disassembling works when only part of the memory is
readable.signal_raise and
signal_lower are now overridable in HRESET port defined in template
hresetAbstractRegister now
checks that all fields in the provided bitfield fits
in the register.mini-python binary
can now be used with the venv and pip Python
modules to install extra libraries
(bug #HSD-18023192821). stream when initializing the context extension.
Registers service.
bin/debug-simics.bat
and bin/gdb.bat trampolines now handles paths with spaces on Windows
(bug #SIMICS-19392).values
key (bug #SIMICS-19180).register_view interface
of DML 1.2 devices no longer returns dummy fields named
<undefined> (bug #HSD-22015396904)..-separated terms, as well as the full term (bug #SIMICS-18324).
BOOST_LIB_PATH when
building libraries and modules that require it.tkinter module can be
used.-recursive was always applied.win-device-regs command
(bug #HSD-18021934808).-clear flag to the
set-prioritized-package command that will unset all such
packages (bug #SIMICS-18516). $.pci_multi_function_device::supported_functions
method (bug #SIMICS-19250).conf_space to map/demap e.g. virtual
functions (bug #HSD-18022270740).YAML-DECL-START and YAML-DECL-END
markers.-l command line option
are now the scripts
named targets/*/*.target.{simicsy,pyy,yml}, in any
available package.file
parameter type. This is similar to the string type, but the value
should point to an existing file, potentially
using %simics% or %script%.cmake-wrapper.mk for legacy build flows.debug_symbol_file interface now
includes entry-address for PE files as well.undefined as register offsets; replaces such uses with
unmapped_offset (bug #SIMINT-1486).-l command line option
are now the scripts named targets/*/*.target, in any
available package.YAML-DECL declaration instead of the standard YAML format
specifier.code key
to code-type.cmd which
can contain a string of code, Simics or Python. This is an
alternative to adding code at the end of the
file.0.multithread_assert_on_warning attribute from the
global sim object. image objects the same way as
<image>.save and <image>.save-diff-file
(bug #SIMICS-18304). cycle interface and does not have
its queue attribute set.independent,
startup or memoized would give a parse
error.dim-on-stop module preference for gfx-console
(bug #SIMICS-17895).&. This can only be used with
methods that that may also be exported using the export
statement (bug #SIMICS-14921).
signal_port
and signal_connect which help maintain correct handling of the
signal interface, i.e. do not raise signal when already high, and do not
lower it when already low.run_in_thread set to poll thread (2) (bug #SIMINT-1469).
-local flag was always on in the run-script
command.direct_memory_lookup_v2 interface. It adds
support for doing lookups using transaction_t transactions,
so that atoms are taken into account.dmwcs, dmwls and frss to the
Device Capabilities 2 cap2 register in the exp_dev
capability template. This requires that the parameter
pcie_version is set to 6.0 or higher
(bug #HSD-22014754058).Port Object.
Migration Guide chapters
of the C++ Device API v2 Programming Guide and the
SystemC Library Programming Guide.
-s which turns off the frontend object change on
hap triggers.value_type simics::Connect as a Simics
attribute using the help macros. bank_before_read, bank_after_read, bank_before_write
and bank_after_write interfaces now have
an initiator method.struct-like types, e.g.:
method construct_buffer_t(size_t siz) -> (buffer_t) {
return { .len = siz, .data = new uint8[siz] };
}
SimExc_PythonTranslation for interfaces
that are not found, only for interfaces that are found but lack Python
wrappings.-port flag has been removed,
it's still possible to probe a port-space by selecting it with
the object argument.TRUE. If set to FALSE, the last transaction initiator is
used as event queue, instead of a fixed clock
(bug #SIMINT-1230). Other, Idle and VM
Guests nodes when performing context query or node path pattern
matches.Register class
constructor now has an optional initiator parameter, whose value
is used as the initiator of the transactions
accessing the register.-re flag
on bp.log.break, bp.log.wait-for, bp.log.run-until
and bp.log.trace have been renamed to substr
and -regexp, respectively
(bug #SIMICS-18988).transaction_t data
type can now be accessed with the ATOM_transaction_<type>
accessor functions. The new accessor functions return NULL value
if the atom is not present which allows to identify easily the cases when
atoms are not present (bug #SIMICS-19003).volatile and restrict
qualifiers are now handled by expression_type
in debug_symbol interface.const and volatile
has been improved.symdebug interface which may have impact on
other sym-commands.issue method in the
map_target template can now be overridden....
instead of the dimension size; for example, the following is now
supported:
group g[i < 4][j < ...] { }
group g[i < ...][j < 7] { }
target command.osa_component interface is
called, unless the <osa_admin>->processors attribute has
been set prior to that.secondary bus number
is non-zero. See method enabled in template type_1_base_address
which you can now override.free running mode in the Simics adapter. See the
Free running chapter of the
SystemC Library Programming Guide for more details.
an_array[N] in the add
function.Port class which returns the array index if the provided
object name is a valid array format.cmake_path when the input parameter is a list. The parameter must
be quoted.Simics::Extensions
target.SIMICS_GLOB_ONLY_PROJECT from
project template into common Simics.cmake.simics_package so that the
package info file is emitted into the associated project where the modules
are being emitted; as that's what Simics expects in the default
flow. Honors CMAKE_LIBRARY_OUTPUT_DIRECTORY if
set.Simics::includes
target to be used as a target link library (i.e. as a dependency) instead of
referencing the internal SIMICS_INC variable as a target include
directory.README.md documentation
for the Simics.cmake file covering all functions, targets and
variables.break may now be used within
foreach statements (bug #SIMICS-18719).
sc_start() after sc_stop() if there was pending
events at current time (bug #SIMICS-18973).-shutdown
flag.FindHyperscan.cmake on Windows.translation_flush and new API function
SIM_map_target_flush were added. They add support for efficient
invalidation of simulation caches by device models. We recommend that
translator objects implementing the transaction_translator
interface implement also the new translation_flush interface.
The SIM_map_target_flush function can be used as a replacement for
the SIM_translation_changed function to flush simulation caches
more effectively (bug #SIMICS-13959).map_obj, even when set to NULL.ecam map-target
to the downstream_port template, which connects to the
ecam port of the pcie-downstream-port, if present.config-user.cmake support
for local configuration to keep the top-level CMakeLists.txt unmodified. This
simplifies upgrading to a more recent Simics Base.SOURCES for simics_add_module are searched for
relative to first the current source directory and then the current
binary directory. Absolute paths are not allowed. Relative paths
with .. in them will give a warning.CMAKE_LIBRARY_OUTPUT_DIRECTORY variable allowing the user to
specify where the Simics modules are created. If not provided, it defaults to
the associated project's host/lib folder.arm_nsaid atom have been added. See the
header file simics/arch/arm.h.after statement through the use of the
cancel_after() method, provided as part of the object
template (bug #SIMICS-17930).
session
variables no longer result in invalid generated C
(bug #SIMICS-9440).local
variables of (partially) const-qualified struct type no longer result in
invalid generated C (bug #SIMICS-10197).IFACE_FILES, are now built twice. Once
targetting the current Python 3.7, and once targetting Python 3.9,
to allow forward compatibility with a Simics-Base that includes
Python 3.9. cmake-wrapper.mk for
legacy build flows.arm_smmu_attributes atom have been added. See the
header file simics/arch/arm.h.SIMICS_GLOB_ONLY_PROJECT=1 or remove the lines from
project's top-level CMakeLists.txt file.CommandLine
service so that it does not block TCF events from being processed while a
command is running (bug #SIMICS-18613).break may now be used within
foreach statements in DML 1.2 and #foreach statements in
DML 1.4 (bug #HSD-1309451301).
Simics::C++v1.src/devices/c++-api-v1. Since SystemC Library is
shipped with Simics Base the path is already updated. Users of the ISCTLM
add-on package must upgrade to latest version to match this change.
arm_privileged, arm_nonsecure
and arm_memory_attributes atoms have been added. See the
header file simics/arch/arm.h. Note that Arm core models do
not generate transaction with these atoms yet.telemetry to the standard
set of interfaces. Will now also be included in the ISIM base package
(bug #SIMICS-18551).struct-like types
(bug #SIMICS-17252). For example, the following is now supported:
local size_t size = get_size();
local buffer_t buf = {.len = size, .data = new uint8[size]};
local size_t size = get_size();
local buffer_t buf = {size, new uint8[size]};
use_io_memory
is false) now handle accesses that are bigger than 8
bytes.NAWS command which resizes the text console.-no-gui command
line option is specified (bug #HSD-14014982803).map_target which can be used
on connect objects to expose methods for reading and
writing data from/to the connected object.register_info and the
number_of_registers methods of the
register_view interface (bug #SIMICS-18427).
saved variables or parameters to
methods called with after (bug #SIMICS-18440).
Serialized representation of uint8[(be|le)_t] array types has
been changed. The old serialized representation is still accepted for
deserialization in order to preserve checkpoint compatibility.
pcie-downstream-port-legacy which caused all
devices and functions to be mapped with function 255, not only
the connected legacy-devices.OS node that becomes active after hand-off to OS, unless when
SMM is running. While UEFI (including SMM) is running, the UEFI
Firmware node, is active. There is a new root node grouping these two
nodes together. This fixes so that code coverage can collect instructions
only when UEFI is actually running and not collect a lot of unknown
addresses while the OS is running
(bug #HSD-16014910594).The internal representation of values of template types has been changed. It is no longer allowed to cast such values to integer or pointer types.
documentation parameter or
the desc parameter are now considered internal by
default. Register-attributes are internal by default, regardless
if they define documentation or desc. This can
be changed by explicitly overriding the internal
parameter of the register or attribute.
spec-violation message on log level 1
on first such write, and no logging on further such writes.
bus_number on the pcie-downstream-port-legacy
class.sc_memory_access interface.
after calls to
methods belonging to confidential objects, and accessing qname of
non-confidential children belonging to confidential objects.
A warning is now emitted when qname of a non-confidential child
of a confidential object is used outside of log statements
(bug #SIMICS-18428).
toc.json..py and
generated .pyc files are now being copied to the build
output directory. If the COMPILE_PYC variable is set
to 0, then only .py are copied. This facilitates
distributing Python source files only. Register and related
classes are now based on `transaction_t` instead of
`generic_transaction_t`. This means that banks may now implement
the `transaction` interface as an alternative to
`io_memory`. The internal fields `read_memop` and `write_memop`
have been changed to `read_transaction` and `write_transaction`;
these are still internal but can be manipulated, for instance, by setting
`reg.read_transaction.inquiry = True` or
`reg.write_transaction.initiator = conf.cpu`.-tree-summary flag
to <code_coverage>.html-report. With this flag the summary
will be shown in such a way that the coverage of a directory also includes
coverage of all
sub-directories (bug #HSD-1308396992).ContextReset service, not a warm reset.
PCIE_Error_Configuration_Request_Retry_Status
to the pcie_error_t enum type.shared methods are now allowed as parameter definitions.
dmllib.h, needed
to compile DMLC-generated C files, has been moved
to host/bin/dml/include/simics. Makefiles have
been updated to add this directory to the include
path. transaction_t, if one is present, is now passed in
the aux argument of the access-methods in Config
banks.Sim_PE_IO_Error on failure, with the
additional error code PCIE_Error_Completer_Abort in
the pcie_error_ret atom of the transaction, if
present and not set.bank_regs, which allows easy access to all
registers and fields of a
bank (bug #HSD-22013771528).-tree will now summarize arrays of objects without children.
The new flag -expand-all prints all array indicies
(bug #SIMICS-18243).-tree array indicies are now sorted numerically.
DW_AT_high_pc with DW_FORM_udata did not work
(bug #HSD-15010164213).--stand-alone flag did.
The flag is still there, but is no longer needed.
REP prefixes correctly
(bug #SIMICS-18301).MODULE_CFLAGS
variable is no longer used when compiling the Simics-internal
file module_id.c. This means that you no longer get
compiler warnings if you use C++ specific flags
among MODULE_CFLAGS in a pure C++ module
(bug #HSD-2204238258).
Certain compilers may require some flags to function; e.g. a
modern GCC version may need the -B flag to run on an
ancient system. It is no longer sufficient to pass such flags
through the CFLAGS or MODULE_CFLAGS variables,
as they won't affect the compilation
of module_id.c. Instead, such flags can be appended to
the BLD_CFLAGS variable. This can be done in the
file module-user.mk.
export statement on a method with
multiple output parameters.pcie_bridge, to be used by Type 0 devices that
bridge PCIe to something other than PCIe, typically host
memory.handling_upstream_messages which can be implemented in
a Type 1 device that wishes to handle some or all messages
passing it in the upstream direction.ats_upstream_translator and handling_prs_messages
which can be implemented in a Type 1 device that wishes to service
ATS/PRS requests.providing_ats_methods and providing_prs_methods.
The functionality in those templates can now be found in the
ats_capability, prs_capability,
upstream_translator, and handling_prs_messages
templates.%simics% or %script%.--moduledirs to
test-runner to specify a semicolon-separated list of directories
containing module sources.io_memory
or port_space destination. The zero-sized
transaction will be issued to the destination
object.--copy-sdb to the
project-setup script. SDB is an easy way of running x86 host
binaries inside a virtual Linux system (QSP). To use SDB, the experimental SDB
package (7020) needs to be installed as well as the QSP package (2096).
Memory memoryChanged
events if Simics memory map changes (bug #HSD-18018469074).
pcie_byte_count_ret_t typedef. The member val
is now of type uint64.PCIE_Latency_Tolerance_Reporting
PCIE_Optimized_Buffer_Flush_Fill and
PCIE_Precision_Time_Measurement.pcie_upstream_target. The same functionality is provided
by transaction_translator interface.after statements now support
cycles as a unit of time (bug #SIMICS-8798).gfx_con
interface has been updated and is now part of the supported API
(bug #SIMICS-17987). type_1_bank
template where the range of secondary through subordinate bus number
in the Msg address space was not claimed.config_bank
template now returns PCIE_Error_Master_Abort instead
of PCIE_Error_Not_Set if the transaction failed but
the pcie_error_ret atom wasn't set.cfg, mem, io, and
msg.Layout class now
accepts either an instance of Memory
or memory-spaceexpect_log
and expect_log_mgr now take an optional argument
regex which is regular expression object or a string
containing a regular expression suitable for use by
re.search().script
key.i8, u8, i16,
u16, i32, u32, i64, u64.
--project option to be passed more than once, with the last one taking precedence (bug #SIMICS-18183).component_utils Python module (bug #SIMINT-1422).
pcie_map and the pcie_device
interfaces are now of type uint16.--state-change-dml12 flag together with the
--split-c-file flag
(bug #SIMICS-17975).@ [i], as
with field objects (bug #SIMICS-18156).pcie_map interface no longer allows duplicate
device ids to be added.pcie_map and pcie_device
interfaces..len on
constant-sized object or value arrays to obtain the number of elements
they contain. These expressions are constant
(bug #SIMICS-13114).documentation script to open the documentation by default again.--- (bug #HSD-18018645206).bin\vmp-kernel-load.bat
and bin\vmp-kernel-unload.bat on Windows
(bug #SIMICS-17127).-pico-seconds flag
was added to the print-time command. The flag can be used
to retrieve the number of picoseconds that a processor has executed
(bug #SIMICS-17804).--state-change-dml12
flag, allowing the use of an incomplete version of state change notifiers
in DML 1.2 devices (bug #SIMICS-17952).USE_SIMICS_CHECKPOINTING=no is passed to the build script
(bug #SIMICS-17931).tuple_to_value_be,
tuple_to_value_le, value_to_tuple_be
and value_to_tuple_le are deprecated, in favour of the
new Python builtin methods int.to_bytes
and int.from_bytes. RunControl
getMinState.Step
to Suspended.System.map
symbols.transaction member of a generic_transaction_t
pointer when passed as an argument to e.g. space_access method
in memory_space interface.X then Y
for the level in log statements to have the first log happen on log level
X and subsequent logs happen on level Y
(bug #SIMICS-13513).read_only or similar templates from
utility.dml would switch log-level at the same time
(bug #SIMICS-7025).after statements now support
methods with serializable method parameters
(bug #SIMICS-7030).lower-pwrreset notify that a processor has reset. This
allows breaking on reset in Intel® System Debugger when using recent
platforms (bug #SIMICS-17801).cpu_cached_instruction_once
interface.Also, function equivalents of both macros, named log2_32 and log2_64, have been added.
lower-pwrreset notifier instead of a reset
hap. This fixes problems where the tracker would keep tracking DXE after a
processor reset (bug #HSD-16013794116).<project directory>\documentation.bat
script was fixed. Previously, it failed with an exception.
project-packager script
(bug #SIMICS-17671).-ipv4 flag
to the new-gdb-remote command are now deprecated in Simics 6.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. The <gdb-remote>->use_ipv4 attribute now has the same global effect as those attributes.
-ipv4 flag to the vnc-setup command are
now deprecated in Simics 6.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. The <graphcon>->vnc_use_ipv4
attribute now has the same global effect as those
attributes.-ipv4 flag to the telnet-frontend command are
now deprecated in Simics 6.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. The <telnet_frontend>->use_ipv4
attribute now has the same global effect as those
attributes.-ipv4 flag to the telnet-setup command are
now deprecated in Simics 6.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. The <textcon>->telnet_use_ipv4
attribute now has the same global effect as those
attribute.script-params.documentation (documentation.bat on Windows) script that is added to your projects.
tsc_shift module parameter on Linux or TSCShift registry
variable on Windows. By default target TSC is 2^8 (tsc_shift = 8) times
slower than host TSC. For this feature to be used, a new version of the
respective CPU module must also be installed.is_defining_expansion_rom template to add it
explicitly.exp.capability.si
field HwInit. The status.c field now defaults to 1 if
the init_val of capabilities_ptr register is
non-zero.msi.control.mmc field if num_vectors
parameter was 0.cpu_cached_instruction_once was added to the
instrumentation framework. With this interface it is possible to install
callbacks for instructions that are automatically remove after they have
triggered the first time. This can be useful in some situations,
(bug #SIMICS-17147).
libgcc_s and, on
Windows, the libstdc++ libraries have been updated to
match gcc 11.1.-use-cpu-number that prints the CPU number as before.
The -use-cpu-number and -remove-duplicates
does not affect the default flag values, i.e., to trace and
print everything. Previously -remove-duplicates, forced
you to add any of the trace flags or print flags to get any
output. This could easily lead to nothing printed.
Related to (bug #HSD-1509209442).
pre_decoder was added to the instrumentation
framework (only x86 targets). With this interface it is possible to
observe and/or change the instruction bytes before Simics decodes the
instructions, (bug #SIMICS-16795).
.simics and .include files
(bug #SIMICS-16894).libstdc++ library have been updated to match gcc
11.1.read_bits and write_bits
methods. A command <bp-manager>.wait-for-breakpoint has also been added.
Column_Key_Binary_Prefix was
added to the table interface. This allows integer values to be printed
using a binary metric prefix instead of displaying large numbers. The ki,
Mi, Gi, Ti, Pi, Ei, and Zi prefixes are supported. The key value is a
string that will be interpreted as a unit and will be added to each value
after the prefix, e.g., if the string is "B" then MiB etc. will be
printed. If the string is empty no unit will be displayed.
miss_pattern_bank template.init_val, of the status.c field
('Capabilities List') to 1.pcie_multifunction_endpoint.pcie_device_id
atom.-cpu-host-tick flag
should now more properly distinguish ticks in processors versus
ticks consumed by clock objects. Ticks not associated with a
processor will now be reported in the "Outside Processors"
column (bug #SIMICS-17348).mii_management gasket. The new gasket is used to connect a
SystemC PHY device. _MSVC_LANG for MSVC instead of
__cplusplus. Fixes complaints about unknown flag when using
Visual Studio 2015.SimContextInterface now sets correct SystemC context on
enter (bug #SIMICS-17539). -mrte-mode native instead of auto since it appears to
not crash with VTune Profiler 2021.03.0.
NIL return value (bug #SIMICS-17313).
libgcc_s library
that is shipped with
Simics has been upgraded to match gcc 10.3.generic_transaction_t
with NULL data, using any of the
SIM_{get,set}_mem_op_value_{buf,cpu,be,le} functions, now
raises a SimExc_Memory frontend exception instead of a
hard failure.generic_transaction_t now supports modifying the attached data
and (re)allocating it (if owned).abstract_base_address which can be used by anyone
who needs to write own templates for base address registers that
should be mapped/unmapped when e.g. the command register is
writtendownstream_port template-fno-stack-protector when
compiling python trampolines, in case -fstack-protector-strong is
set by default; which is the case on some recent Linux distros like Ubuntu
20.04.project-packager script now includes files
in host/sys/lib in the package. Column_Key_Metric_Prefix was
added to the table interface. This allows floating point values to
be printed using a metric prefix instead of displaying large or small numbers.
The k, M, G, T, P, E, and Z prefixes are currently supported for positive
exponent, and m, µ, n, p, f, a, z, and y for negative exponent. The key value
is a string that will be interpreted as a unit and will be added to each value
after the prefix. If the string is empty no unit will be printed.
-load flag
to <linux_tracker_comp>.detect-parameters command, that
allows loading the newly detected parameter directly. Using this flag
removes the need to
call <linux_tracker_comp>.load-parameters after detecting
parameters (bug #SIMICS-15416).-fstack-protector when
building interface modules. This fixes build problems on Ubuntu
(bug #HSD-18016125756). -load flag
to <sample_linux_tracker_comp>.detect-parameters command,
that allows loading the newly detected parameter directly. Using this flag
removes the need to
call <sample_linux_tracker_comp>.load-parameters after
detecting parameters (bug #SIMICS-15416).-load flag
to <uefi_fw_tracker_comp>.detect-parameters command,
that allows loading the newly detected parameter directly. Using this flag
removes the need to
call <uefi_fw_tracker_comp>.load-parameters after
detecting parameters (bug #SIMICS-15416).-no-inline switch to the
<vtune>.report command, not displaying inline functions in
the profile but accounting the caller function instead.
-temporary was
added to the log-filter command
(bug #HSD-22011543779).Simics.cmake in favor of the more
generic add_custom_command...) are allowed but should be avoided.list-simics-modules cmake
target.CMAKE_BUILD_TYPE
has been set.!, !=,
@, etc. (bug #SIMICS-16876).
saved
variable inside a register or field
(bug #SIMICS-17201). class_disassembly of a processor class to disassemble, if
possible. This will allow disassembly support for more architectures once
the interface is implemented in more processor modules
(bug #SIMICS-16974).-all flag which also list the clocks in the system
(bug #SIMICS-16688).saved variables declared
within templates to the template type.unmapped_offset
which makes a register unmapped.i3c_slave
and tlm2simics i3c_master gaskets. The new gaskets are used
to connect a Simics I3C master device with a SystemC I3C slave
device. Simics-Base/cmake/README.md for more
details.uint8 array to a
layout pointer, assign to the layout members, and then access
the arrays as bytes. This would sometimes give problems when using
-fstrict-aliasing with new GCC versions
(bug #SIMICS-16978). pcie_map interface. The
pcie_device interface has two new methods:
connected and disconnected, which informs
the device when it should use the pcie_map
interface to add/delete functions. The dynamic_devices
attribute has been renamed to functionshost/sys/lib directory and will then be found when
loading modules. On Linux this should be done by modifying the RPATH
of the modules at build time (not done automatically, but has to be
done by each module itself) and on Windows the DLL search path is
automatically augmented by Simics at runtime.~ to the current user's home
directory, if it appears at the start of the given string. On
Windows, the home directory is defined as either %USERPROFILE% or
%HOMEDRIVE%%HOMEPATH%, which ever is non-empty
(bug #HSD-14013680363).debug_symbol_file interface will now include
a elf-machine-id for ELF files, which corresponds to the numeric
machine identifier in the ELF header. filelist.json for
packaging input.host/doc/html/doc-name.-tree flag so that
multi-dimensional object arrays are split at each dimension
(bug #SIMICS-16379).BreakConditions property will
no longer be set for top level contexts.pcie_device, pcie_map,
pcie_port_control, pcie_upstream_target
interfaces and pcie_device_id atom.init_as_subobj which can be used
on connect objects to make it instantiate a subobject
automatically (bug #SIMICS-16131).--device, and --interface are now in DML 1.4.
loggroup parameter inside a group
object. nothrow
annotation for methods
(bug #HSD-18012035545). connect now
accepts the values "none" and "pseudo", just
like attributes and registers do.group objects are now
allowed anywhere in the device hierarchy. All kinds of objects
except bank, port, interface
and implement may reside inside a group (in DML 1.2,
field objects are also disallowed inside
groups) (bug #SIMICS-16563).attribute, saved
and session objects are now
permitted also inside implement objects. sample-transaction-atoms module.-dirty-only which facilitates saving only modified
image data (bug #HSD-22012211700).extern
(bug #SIMICS-16187).implement blocks, if the method's return
type does not match the interface method. Previously, only input
arguments were typechecked in interface
methodssystemc-library-version.h header file. Since SystemC Library
is shipped with Simics Base the build-id.h header file can be
used instead. Users of the ISCTLM add-on package must upgrade to latest
version to match this change.static variable is
declared within a method declared under an object array, it will
now result in a separate instance of the variable for each
instance of the containing object
(bug #SIMICS-13738). session variable declarations
are no longer permitted within methods marked with
inline. saved variable
declarations are now available. These can be used to declare
variables that behave similarly to session variables,
but that are automatically checkpointed
(bug #SIMICS-7031). static variable is
declared within a method declared under an object array, it will
now result in a separate instance of the variable for each
instance of the containing object
(bug #SIMICS-13738). print-device-regs and related commands, when
inspecting a function-mapped bank array in a DML 1.4 device
(bug #HSD-1508646546).connect
objects is declared
as configuration=optional, then it is now permitted to
assign it a shorter list than the array size. For instance, a
connect connect objs[i < 10] now has the type
string "o|[os]|n{0:10}" (bug #SIMICS-16132).
layout types may no longer be declared extern.
It never worked to access members of such types, so they can safely
be replaced with an opaque extern struct. E.g., if you have this
declaration:extern typedef layout "big-endian" {
uint24 member;
} my_type_t;then you can safely replace it with:
extern typedef struct { } my_type_t;
group argument
to <tool>.add-filter command allows attaching a
filter to all connections with a specific instrumentation group.
Similarly, the <tool>.remove-filter can now also
remove filters on connections associated to specific group.
Use one of the command above to add the filter to the new connections, with or without a group.
-source-only-data flag
of <code_coverage>.html-report command.
debug_symbol interface to return absolute paths instead
of relative when debug information contains paths that are relative to the
compile unit.
This module requires a recent VTune Profiler to be installed on the same
host as Simics executes. The module is currently distributed as an
unsupported feature. Use enable-unsupported-feature feature =
vtune-measurement and help new-vtune-measurement to get
started.
debug_query
interface now accepts all objects that have a matching TCF context, not
just processors, memory spaces and OS awareness
objects.-linear flag with
the collect-coverage command. -hide-port-objects flag has been
added to the
list-objects command to suppress any
"port", "bank", or "impl"
objects (bug #SIMICS-16046). -global-only flag has been added
to the
list-commands command to suppress any non-global commands
(bug #SIMICS-16372). RunControl getISA
command will now return the current ISA for x86 processors, instead of
the processor architecture. -ipv4 flag
to the new-gdb-remote command are now deprecated.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. -ipv4 flag
to the vnc-setup command are now deprecated.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. -ipv4 flag
to the telnet-frontend command are now deprecated.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. -ipv4 flag
to the telnet-setup command are now deprecated.
Use <prefs>->force_ipv4
or <sim>->force_ipv4. -plain
for listing only command names,
without descriptions. libfuse library required
by craff-fs is now distributed
with Simics. -show-zeroes flag, which also prints the registers
which have not been accessed
(bug #SIMICS-15400). -independent-checkpoint/state flag if any image in
the configuration has a writable file. -ipv4
flag to
the new-gdb-remote command. -ipv4
flag to
the telnet-frontend command. libgcc_s library
that is shipped with
Simics has been updated to match the
shipped libstdc++ library. if has a
constant condition, and the taken branch consists of a variable
declaration. I.e., if the code if (true) local int x;
appears in a scope, then the variable x is now added to
that scope (bug #HSD-18013028128). -e flag, similar to
the <graphcon>.input command. -s. -e flag, similar to
the <textcon>.input command. -s flag
(bug #HSD-22011385504). read and write methods have been used
or not. -ipv4 to the new-gdb-remote
command. -ipv4 to the telnet-frontend
command. substr argument has been added to
filter for specific text
(bug #SIMICS-16033). craff-fs utility, which can be used
to mount CRAFF files as loop devices on Linux. label:). goto statements are already forbidden
in DML 1.4, so goto labels are useless. case and default
labels in switch blocks are still allowed. while loop
is statically
evaluated to false, then faulty code in the loop body can now
cause compile errors. Previously the loop body was
silently discarded. documentation
parameter are now considered internal by default, meaning that
they will be excluded from reference documentation by default.
This can be changed by explicitly overriding the internal
parameter of the register or attribute. -include-line flag of
the <code_coverage>.html_report command
to enable. -n flag is deprecated. A
flag -sort-by-classname has been added to obtain the old
default behaviour of sorting on class names. cli.global_cmds namespace was added
(bug #SIMICS-15621). The new functionality is documented
in the Simics User's Guide, section Accessing
Command Line Commands from Python. bank, port and impl
will be included in the list. The root object in the selected
namespace is now also included in the list, unless it is a
component. list-*
commands to be printed when used in scripts. list-* and print-*
commands now prints the output
in a table format that better adapts to different terminal widths
(bug #SIMICS-15902). image interface
started beyond the end of the image
(bug #SIMICS-14052). image interface
fill function now logs an
error if part of the fill range is beyond the end of
the image. .len on lists
and sequences to obtain
the number of elements they contain. This expression is constant
for lists and non-constant for sequences. EEC.AutoRD bit is now set by
default to indicate that the
auto EEPROM read has finished
(bug #HSD-14012262984). x.y, one
can either use self.add_pre_obj('x.y', 'cls')
or self.get_slot('x').y =
simics.pre_conf_object('cls'), given that a pre-object
already has been added to the slot x. These two methods
are now equivalent and interchangeable; in both cases the object
will be equivalently accessible as self.get_slot('x.y')
and self.get_slot('x').y. test-<module> make targets on Windows
(bug #SIMICS-15162). { addi a14, a1, 16; movi a15, 4 } will be presented as
{addi;movi}. --create=SIZE option that
creates an all zeros craff
file of the specified size
(bug #SIMICS-15905). exception_type_t and
pseudo_exceptions_t
types have been merged, and the latter is
now deprecated. mmc interface. This also
makes the interface documentation available in the api-help
command (bug #SIMINT-1261). break_strings interface
is now deprecated,
and is superseded by the break_strings_v2
interface. -e, which can be used to send special characters,
similar to the <graphcon>.input command. break_strings interface
is now deprecated,
and is superseded by the break_strings_v2
interface. -no-win
command line
parameter did not override the visible
at startup. bank_obj template
is now available
in the utility file,
providing a single shared method bank_obj which
returns the bank configuration object of a bank. dml12-compatibility.dml file now also provides shared access
to typed variables defined in the common templates
name, shown_desc, miss_pattern_bank, and
function_mapped_bank. See the DML 1.4 reference manual
for details on which typed parameters each
template provides. bank_obj template
is available
in DML 1.2 through the experimental dml12-compatibility
file. See DML 1.4 releasenotes for the
functionality provided. libslave files have been
renamed
to libfollower. nothrow and
multiple return arguments, returning a typed template or struct type
(bug #HSD-18012036595). dml12-compatibility.dml
now adds a
parameter val to field objects. val
member. This is currently
a bitslice into the field's bits within the parent register's
storage. The .val parameter can be read, and it can be written
using assignment (=); however, the operators
-- and ++ do not work
yet. Also, .val cannot be accessed from a shared
method. bitorder be declaration
(bug #SIMINT-1275). bin/port-dml-module
to port all devices
in one Simics module to DML 1.4. long, ulong,
size_t
and ssize_t now correspond to the correct C types. For
instance, on Linux, both the long and int64
types are signed 64-bit integers, yet C considers them
incompatible and refuses to assign between pointers of
type long * and int64 *. DML now mirrors this
behaviour, which makes it easier to call an externally defined C
function that takes a long * argument. bitfield 32 {...} is compatible
with uint32). tlm2simics/gasket_factory.h to support use-case to connect one
initiator socket to multiple tlm2simics gaskets.
Support requires implementing the method receiver in the
TransactionHandler inherited by
the gaskets. bank
objects is now declared
throws; a read outside registers causes an exception
like in DML 1.2, causing the inquiry access to fail. partial and
overlapping in banks
are now true by default. --resize argument no longer
accepts invalid input
(bug #SIMICS-15644). queue argument of
the print-event-queue (peq) command. The old
integer values have been deprecated
(bug #SIMICS-15616). -b
or -l flag is given
(bug #SIMICS-15535). ~) on a
boolean value
now gives a compile error. Previously it resulted in an
unconditionally true value, which is not what
you want. layout or bitfields
(bug #SIMICS-9088). [u]intX_(be|le)_t (where X is a multiple of 8, up to 64)
and describe an integer of the specified size with the specified byteorder
and natural alignment of 1 byte. These can be transparently used as if
they were regular [u]intXs in calculations
(bug #SIMICS-7603). int_register, e.g. register-banks. Instead they
are registered on objects implementing either
processor_info (for read/write-reg) or
processor_internal (for all others)
(bug #SIMICS-14056). TargetDescription
service
(bug #SIMICS-15324). custom_time_event
from dml12-compatibility.dml. object, class, iface, and substr
(bug #SIMICS-15559). This command replaces the
command-list command which has
been deprecated. switch statements,
case labels are now
permitted inside #if blocks
(bug #HSD-14011267833). ++ and
-- operators could not
be applied to pointers. dml12-compatibility.dml file now provides default
implementations of
methods read_register, write_register,
read_field, write_field
and io_memory_access.
When overriding these methods in a DML 1.4 file, there are templates
dml12_compat_read_register, dml12_compat_write_register
etc that will make sure the overrides are invoked if the file is
imported from DML 1.2. port-dml script now accepts an
argument --compat to generate 1.4 code that works
better when imported from DML 1.2. The resulting code is less
clean, so it should only be used on code that needs to retain
1.2 compatibility for some time. --copy-device parameter to
bin/project-setup
has been deprecated and is replaced
by --copy-module. --list-modules parameter
to
bin/project-setup that will list all modules with source
code that can be copied into the project
(bug #SIMICS-15465). ProcessActionInterface to
filter internal processes when using tools. -a is provided try/catch block in some common
cases. Details are documented with the EBADFAIL_dml12
error message. bool_attr, from a 1.2 device
through dml12-compatibility.dml, the get
method is no longer marked as throws. pcie_upstream
and pcie_downstream. The pci_bus connect
implicitly sets these connects using the same object
and 'upstream' and 'downstream' ports
respectively. COMPILERS variable, with allowed
values cl, gcc or both. The chosen compiler
is the first one listed, unless COMPILER has
been set. If the chosen compiler is cl, the Visual
Studio cl compiler will be used, otherwise
MingW gcc. IFACE_FILES),
the MODULE_CFLAGS variable is not
used (bug #SIMICS-15358). class argument to the
list-objects command
only filters on class names and not incorrectly on interface names
(bug #SIMICS-15199). flag_t CLI argument type has
been added (bug #SIMICS-15230). get and set methods
are now overrideable in
bank objects. bin/build-systemc-libraries memory_space interface instead of the
class itself (bug #HSD-22010457456). -log enables this
feature (bug #SIMICS-15231). if (f) into if (f != 0). && and ||
operators. For instance, in a && b,
and a resolves to constant false,
and b is nowhere defined, then DMLC would
previously silently evaluate the expression to false; now it
will give a proper error message.
Expressions like cond_is_defined && cond(), where
cond_is_defined is a constant parameter, can be
rewritten as pred_is_defined #? pred()
#: false. 'Eth_Injector_Pcap_Eof
which triggers when all
packages of a PCAP file has been sent, and also the argument
auto-restart parameter to
<eth_injector>.start
to allow restarting eth injection in a checkpoint
(bug #HSD-1406429360). SYSTEMC_DEPS_CACHE environment
variable. See the Programming Guide for details. <host>/lib/systemc, to make it easier to copy them to
a shared/cached location. CFLAGS and LDFLAGS
are populated by the SystemC Library generic
make rules. -arch32 flag to the
start-magic-pipe command.
It is useful when running 32-bit userspace applications on 64-bit
architecture (bug #SIMINT-890). #7213 must upgrade to the
latest version. file, fileDate, and fileTime. They are useful
to create time-stamped file names in Simics scripts
(bug #SIMICS-14626). sim object, returning the IP address
of the host where Simics runs
(bug #SIMICS-14981). <simics/global.h> is now
deprecated. <simics/vtutils.h> is now
deprecated. Use
<simics/utils.h> instead. nothrow annotation on a
method override even if the overridden method does not. This is
sometimes useful while porting a large code base to DML 1.4,
because it allows get and set methods in
common code to be declared as non-throwing, which is required
by the DML 1.4 standard library. if statement inside a method body, and this code is
imported from a DML 1.2 file, then the statement used to be
interpreted as a DML 1.2 if statement; it is now
interpreted as a DML 1.4 if statement as expected.
The difference is that if the if condition is constant,
then DML 1.2 would discard the dead branch without checking for
errors, while 1.4 evaluates both the live and dead branch.
This change can give new compile errors in existing code; in
this case, you can normally resolve the problem by
changing if to #if. read_unmapped_bits and the
write_unmapped_bits
methods are now available to be overridden for registers. This can
be used to customize behaviour of registers with fields that do not
cover all register bits. pci_system_error
could not be called. dml-builtins.dml when analysing
DMLC-generated C code using the Synopsis® Coverity®
static analysis tool. get, set,
read, and write methods. 2to3 Python tool is now only
run on .py files if
the PYTHON_2TO3 variable is 1. cci_preset_values attribute. simulation_interface.h into iface folder and namespace.
For migration:
1) Replace SimulationInterface with
iface::SimulationInterface.
2) Replace #include <simics/systemc/simulation_interface.h>
with
#include <simics/systemc/iface/simulation_interface.h>. project-packager script to fail
with the NameError exception was fixed
(bug #HSD-14010752897). register_view
and bank_instrumentation_subscribe and limit expansion to
banks which the tool is collecting data for
(bug #SIMICS-14198). desc and
documentation
are now required to be correctly encoded as UTF-8. DISABLE_PY2 and
DISABLE_PY3 variables are
now deprecated and no longer have any effect. --pyver parameter to
bin/project-setup
is now deprecated and has no effect. py2 key in SUITEINFO files and
the command line
parameter py2 to bin/test-runner are now
deprecated and have no effect. mapped_registers
and unmapped_registers. The order is still considered
undefined, but in practice it now changes less randomly, and is
equal on Simics 5 and Simics 6. foreach
loops when traversing
register arrays inside bank arrays
(bug #HSD-1809370911). DMLDIR_<name>_H macro was
undefined when generating dependency files. --mb-key command line option, but the interactive
question for it has been removed. header sections for
including a .h
file relative to the currently imported DML file
(bug #HSD-2209645860). #1013). Next release will be as part of the
Simics Base package. trace-sc-*-all commands
(bug #SIMICS-14223). -verbose flag. SIMICS_MEMORY_TRACKING
feature while also using standard C/C++ memory allocation functions
(malloc, strdup, free, etc.) but will instead raise an assertion failure
together with a descriptive message
(bug #SIMICS-14241). "b|i" or "i|b" now works
as intended (bug #SIMICS-14253). -relative flag was added to relocate relative to the load
addresses in the symbol file. This used to be standard for PE files, but
not for ELF. Now absolute address is standard, so the behavior for PE
files that contain a load address has changed. Use the -relative
flag to get the earlier behavior for such files.
The command was also updated to return an id that can be passed
to remove-symbol-file in order to remove the specific memory
maps that were added by the command. The show-memorymap will
now also show this id.
Some restrictions were added to remove-symbol-file that
requires removing all mappings of an added symbol file
at once. DMLC_PORTING_TAG_FILE, which should be a
filename. When defined, DMLC will create the file if it doesn't
already exists, and then append data to the end of the file,
containing machine-readable instructions on how to port the
device to DML 1.4. The typical use case is to set this variable
when building one or more modules, and feed the resulting file
as input to the port-dml.py script.
The -P command-line argument has also been changed: it now takes
a filename argument, and can be used without -T. connect objects inside banks. x86ex_interface interface
have been ported to DML 1.4. _SYSTEMC_GASKET_CLASSES
is set to no in the module Makefile. -show-line-functions flag
to
the <code_coverage>.html-report command. This will
output which functions make use of each line, in the source reports. This
can be helpful when trying to understand why lines are covered or not,
when there are optimizations and inlined
functions involved. char * or char const * is shown.
sym-string will still show the whole string
(bug #SIMICS-12793). import statement has been
changed: If the path
starts with ./, the path is now interpreted relative to
the directory of the importing file
(bug #HSD-2209506845). sizeof is an identifier that can be
resolved both to a value and to a type. import statement has been
changed: If the path
starts with ./ or ../, the path is now
interpreted relative to the directory of the importing file
(bug #HSD-2209506845). constant)
had to be accessed with $ when referenced from a
parameter in a DML 1.2 file. x86_tlb_v3_interface.
-summary-per-file flag of
the html-report command. targets/common/grub-x86-setup.include target script
and related images are not distributed anymore. memstart_addr symbol if that is available in the symbols
provided when detecting (bug #HSD-1507474883). encoding argument. -z flag to the commands
write-configuration,
save-persistent-state, record-session
and save-recorded-session is
now deprecated. -u, for storing
uncompressed files. Other node once any processor enters kernel space
(bug #SIMICS-13349). numpy from the Simics
Python distribution. -std=c++11 flag during the dependency
phase of the module build
(bug #SIMICS-14135). SRC_FILES variable
(bug #HSD-1306796070). -overwrite flag to save
commands of the
<cpu>.image class to allow overwriting existing files
(bug #SIMICS-13714). get and set methods
are now shared in attributes
inheriting from the DML 1.4 utility templates
(bool_attr etc.). bin\py-2to3.bat
will no longer print a
warning about --write-unchanged-files. build-systemc-libraries build script to support both
python3 and python2. Also updated the statistics for better progress bar
estimate and resolved a bug with read-ahead buffering causing the
progress bar to get stuck longer than expected. sc_in, sc_out and sc_inout to
trace/break-sc-signal-all command. bin/simics with
the command line parameter -2. Each Simics project now
also stores the Python version used as a project-wide property,
used by all Simics instances executed from the project. See more
information in the release notes for
the project-setup script. read and write
templates have been moved from
utility.dml to always be included into 1.2 DML files. Additionally
they are now inherited by all registers and fields by default.
If you now see a name clash on read or write
templates, you will need to rename your user-code
defined templates. dml-builtins.dml and
are meant to be backwards-compatible with DML
1.2 devices. get or
set method
templates and still be inherited by both registers
and fields. rszbar_capable parameter has
been removed as it was redundant and
presumably unused. pci_bus connect. bin/project-setup script
now takes a
parameter --pyver which determines if the generated
trampoline scripts run Python 2 or 3 binaries. simics2tlm gaskets now support
calling b_transport() from an
SC_METHOD, even though this violates the IEEE specification. The
spec-violation is reported as an error, but the call is made anyway as
it might succeed if the b_transport never
calls wait(). unnamed event in
<sc_object> format is used for
tracing an unnamed SystemC sc_event. '--make' option to the
build-systemc-libraries
build script to enable running it with a different version of GNU Make
(bug #SIMICS-13765). Defaults to 'make' if
not provided. py2 which indicates
that Python 2 should be used to run the suite. There is also a
command line parameter py2
to bin/test-runner that results in Python 2 being
used for all specified suites, overriding SUITEINFO. The
SUITEINFO key py3 and the command line
parameter py3 no longer have any effect. ram
interface where the
write method did not work as expected has
been fixed. SimExc_Memory
exception when setting a register's
value via register_view
(bug #SIMICS-12250). DEBUG=yes and
VERBOSE=yes are deprecated and will
be removed in next major version. Use D=1 and V=1
respectively. DEBUG=yes and
VERBOSE=yes are deprecated and will
be removed in next major version. Use D=1 and V=1
respectively. rtc_time parameter to avoid triggering the
deprecation warning when restoring from checkpoint
(bug #SIMICS-12639). py-2to3 now
always runs 2to3 from the Python 3 distribution, which include
pre-generated grammar files. liblzma library
has been upgraded to
version 5.2.4. libexpat library
has been upgraded to
version 2.2.7. method extern. -ns
flag to dump the pcap file with
nano-second resolution. gfx_console, to keep compatibility
with Simics 5. -ns
flag to dump the pcap file with
nano-second resolution. zlib1.dll has been updated
to version 1.2.11. 1 << 64
(bug #HSD-1306575446).$ and C-like
method syntaxbank_attr in the device upon
object creation. Previously, required attributes had to be set
directly on the bank object
(bug #HSD-2207518293). $ and C-like
method syntaxpci/common.dml but may impact models that directly import
one of the internal files. defining_pcie_capability_vN templates have been
deprecated. Please use
the defining_pcie_capability_root_ports_vN
templates instead. vc_id template parameter. It is up to the
model to set the correct value. commands.py and gcommands.py files
(bug #HSD-1507291874). TERM environment variable
and always enables full terminal capabilities, unless the environment
variable SIMICS_SIMPLE_TERM is set
(bug #HSD-1807363858). py3 which indicates
if Python 3 should be used to run the suite. There is also a
command line parameter py3 to bin/test-runner
that results in Python 3 being used for all specified suites,
overriding SUITEINFO (bug #HSD-1507270446). @ to non-existing script
parameters (bug #SIMINT-911). libboost_serialization.so.1.57.0,
libboost_iostreams.so.1.57.0,
libboost_filesystem.so.1.57.0
and libboost_system.so.1.57.0 libraries are no longer
distributed with Simics on Linux hosts, since they are expected to be
available (or can be made available) on all supported platforms. The
SystemC Library will, in addition to the 1.65.1 version bump, use static
linking with Boost from now on; making these libraries redundant from a
Simics perspective. -force flag can be used to discard such changes
(bug #HSD-1806239994). debug_symbol
interface
functions struct_field and struct_members, that
handle struct offsets, were improved to better handle older kind of
debug information. -M flag TRUE the eth_eth_connector_vlan_id is required,
and a VLAN-enabled switch will be created, instead of a standard Ethernet
switch. If service_node_vlan_id is not set, it will take its
value from eth_connector_vlan_id
(bug #SIMINT-841). debug_symbol_file interface. debug_setup
interface will now always return the relocation element as an
unsigned integer. i3c_master,
i3c_slave
and i3c_daa_snoop interfaces into Simics Base.
The i3c-interfaces module is kept to maintain backwards
compatibility. arm architecture in reply to the 'g' command. This will
allow using recent GDB clients when debugging ARM. powerpc:common architecture. Previously the fpscr
register was incorrect. serial_peripheral_interface_master
and tlm2simics serial_peripheral_interface_slave gaskets.
The new gaskets are used to connect a SystemC SPI master device with
a Simics SPI slave device. i3c_master
and tlm2simics
i3c_slave gaskets. The new gaskets are used to connect a
SystemC I3C master device with a Simics I3C
slave device. Core_Conf_Clock_Change_Cell
hap now triggers properly
when a clock inherits its cell association from the object hierarchy.
Moreover, default cell assignment now only happens when a clock
is created and not when its cell attribute is set to NULL
(bug #SIMICS-12834). -skip-zeros parameter is used. io-memory.dml standard
library file,
the operation method is now marked default
(bug #HSD-1507149841). dml_1_2 has been
added to device
scope. The parameter is true, but will be false in future
versions of the language. select
statement has changed to
report errors less often in dead code. In particular,
the else clause may now contain an error
statement to get a compile-time check that the where
expression was satisfied. --help for usage details. debug_symbol interface (bug #SIMICS-11868).
This was incorrectly set to false for symbols containing column
information. Interface description has been updated with how to determine
if a line is executable. bitfields variable: Previously, only integer values
small enough to fit in the bitfield size were permitted; now we
permit assignment of any integer value, and truncate upon
overflow.
This eliminates some compile errors that were introduced by
changes in Simics-Base 5.0.180. System.map. <<
operator is now
always uint64 unless both operands are
constant. Previously, the result could sometimes be a
signed int, which could lead to unexpected sign
extension when assigning the result to a uint64
variable. transaction interface. The
interface supports asynchronous memory accesses and is implemented by
devices that can be mapped into address spaces. SystemC Library has been
updated to support both synchronous and asynchronous accesses over
the transaction interface using the
new gasket. -no-data-labels flag to the
<code_coverage>.html-report
or <code_coverage>.add-functions commands. my-command args = 1 2 3 4, can now also be written as
my-command args = [1,2,3,4]. This also means that a
command that returns a list can be used as input as well, e.g.,
my-command args = (my-list-command). io_memory interface. ../license
before licenses, both relative to the Simics base
installation. <host>/bin/dmlc has been
replaced with the script scripts/dmlc.py. This is
considered an internal change; from a user's perspective, the
entry point of DMLC is still bin/dmlc sfdp_data_1
array
(bug #SIMINT-995). data_bytes_per_page is a multiple of 512
and pages_per_block is a multiple of 2
(bug #SIMINT-977). project-packager script
has been improved in several
ways (bug #SIMICS-11126). multi_passthrough_target_socket to the
LateBinder functionality. simics2systemc::Signal
gasket. print-device-reg-info dev.bank.group[i].reg
(bug #HSD-2206657542).serial_console_frontend,
con_input, con_input_code,
break_strings, gfx_break,
telnet_connection, vnc_server,
host_serial, screenshot,
vga_update, vga_text_update,
vga_text_info. %simics% variable,
and list-packages which returns package info
in %simics% search path order
(bug #SIMICS-5416). register_view implementation
would get and set big endian DML bank registers with the wrong
endianness. translator interface. It was also fixed
to handle mappings in the port-space objects
correctly (bug #HSD-1408585424). remote_callback
interface has been removed since it
is unused. register r is read_only { ... } to instantiate a single
template and is (read_only, write_unimplemented); to
instantiate two templates.
Also, templates and traits now permit is before the
opening brace, just like object declarations do. expect_log are no longer suppressed
from the test log (bug #SIMICS-11450). simics2systemc::Signal gasket
gets its name from the
bound sc_in object in the same format as simics2tlm
gaskets. systemc2simics::Signal gasket. It can be used to bind
the gasket to the sc_out object, replacing the old bind.
The benefit of using the new function is that the gasket will be
named similar to tlm2simics gaskets, with the name of the
sc_out object as part of the
gasket name. Chip Erase and
Program verify
flash commands (bug #SIMINT-913).
This section provides a high-level summary of all new features of Simics 6, presented per product.
Gaskets for standard protocols with default template parameters are provided as Simics classes, to support dynamic instantiation of gaskets based on meta data. There is also an interface for external tools to provide this meta data based on the name of the object. Both these techniques can be leveraged to support a GUI-based drag-n-drop configuration of generated SystemC modules and have them automatically wrapped by Simics.
Improved isolation between SystemC modules, so that SystemC models can be built using different compiler/tool chains and still be loaded into the same Simics session. This affects SystemC tools, which are now built and connected on a per module basis to avoid mistakes with the configuration.
The SystemC tools have been re-worked for improved consistency with other Simics tools.
Refer to the SystemC Library Programming Guide for information.
This section provides a list of minor changes since the Simics 5 version that was current at the time of the initial Simics 6 release.
-readme command line flag has
been removed. Sim_Attr_Session is now
deprecated. Use Sim_Attr_Pseudo instead. Sim_Attr_Doc is
now
deprecated. Attributes are always fully documented unless they
are marked with Sim_Attr_Internal. a type in required attributes and do not support
the D type.
There are also
functions SIM_register_attribute_with_user_data
and SIM_register_class_attribute_with_user_data if
callback data is needed.
The old attribute registration
functions SIM_register_typed_attribute
and SIM_register_typed_class_attribute are now
deprecated. -stall and -fast
flags to Simics have been
deprecated. All functionality is available in the standard
processor models, with no need to switch between the "stall" and
"fast" versions. transaction_t data type has
been added to support
asynchronous memory accesses. The old generic_transaction_t will
remain fully supported in interfaces using it. It may be deprecated in a
later major version of Simics. c 1 ps). new-
command can be namespaced to that class. .so files)
are no longer
distributed with Simics. console-components module instead. INTC_EXT=0 is no
longer supported in Simics
6. Sections covering this has been removed from the documentation.
repostNextEvent and catchUp logic has been removed
from the glue. All interactions takes place at the current time of the
co-engine/SystemC scheduler. The SystemC scheduler may still need to run
ahead of the co-engine (i.e. Simics) in order to satisfy the requirements
of a synchronous Simics interface call. time_quantum attribute has
been removed as it is not needed
anymore with the improved scheduling. run_next_delta attribute, to
run the next delta cycle (or
all cycles on current time) trace-sc commands.