1Renode changelog
2================
3
4This document describes notable changes to the Renode framework.
5
61.15.3 - 2024.09.17
7-------------------
8
9Added and improved architecture support:
10
11* fixed Arm MPU skipping access checks for MPU regions sharing a page with a background region
12* FPU dirty flag is now set on all FPU load instructions for RISC-V
13* fixed Arm PMSAv8 not checking for domains not being page aligned
14* RISC-V MTVAL register now contains the invalid instruction after illegal instruction exception
15* Arm SRS (Store Return State) instruction now saves onto stack SPSR instead of masked CPSR
16* improved support for x86-64, verified with Zephyr
17* added SMEPMP extension stub for RISC-V
18* added ability to configure usable bits in RISC-V PMPADDR registers
19* fixed runtime configurability of the RISC-V MISA registers
20* fixed RISC-V PMPCFG semantics from WIRI to WARL
21* fixed decoding of C.ADDI4SPN in RISC-V
22* fixed behavior of RORIW, RORI and SLLI.UW RISC-V instructions
23* changed MSTATUS RISC-V CSR to be more responsive to the presence of User and Supervisor modes
24
25Added and improved platform descriptions:
26
27* NXP MR-CANHUBK3
28* NXP S32K388
29* NXP S32K118
30* RI5CY
31* Renesas r7fa8m1a
32* Renesas DA14592
33* STM32H743
34* x86-64 ACRN
35
36Added demos and tests:
37
38* Zephyr running hello_world demo on x86-64 ACRN
39* ZynqMP demo showcasing two way communication between Cortex-A53 running Linux and Cortex-R5 running OpenAMP echo sample
40
41Added features:
42
43* Socket Manager mechanism, organizing socket management in a single entity
44* test real-time timeout handling mechanism in Robot
45* GPIO events support for the External Control API
46* Zephyr Mode support for Arm, Arm-M, SPARC, x86 and Xtensa
47* disassembling support for x86-64 architecture
48* support for bus access widths other than DoubleWord for DPI integration of APB3
49* support for overriding a default implementation of the verilated UART model
50
51Changed:
52
53* improved `renesas-segger-rtt.py` helper
54* Renode logs a warning instead of crashing when HDL co-simulated block reports an error
55* improved `guest cache` tool results readability
56
57Fixed:
58
59* PulseGenerator behavior when `onTicks == offTicks`
60* External Control API GetTime command returning incorrect results
61* SystemC integration crashing when initializing GPIO connections
62* USB Speed value reported in USB/IP device descriptor
63* USB endpoints with the same number but opposite direction not being distinguished
64* a potential crash due to ``OverflowException`` when stopping the emulation
65* checking address range when mapping memory ranges in TranslationCPU
66* configuration descriptor parsing in USBIPServer
67* fatal TCG errors in some cases of invalid RISC-V instructions
68* handling registration of regions not defined by peripherals
69* handling registration of regions with unpaired access method
70* incorrect sequence number in USBIP setup packet reply
71* SD card reset condition
72* starting GDB stub on platforms containing CPUs not supporting GDB
73* infinite loop on debug exception with an interrupt pending
74* simulation elements unpausing after some Monitor commands
75
76Added peripheral models:
77
78* Arm CoreLink Network Interconnect
79* LPC Clock0
80* RenesasDA14 GeneralPurposeRegisters
81* STM32 SDMMC
82* Synopsys SSI
83
84Improvements in peripherals:
85
86* Arm Signals Unit
87* CAES ADC
88* Gaisler FaultTolerantMemoryController
89* LPC USART
90* MiV CoreUART
91* NXP LPUART
92* RenesasDA Watchdog
93* RenesasDA14 ClockGenerationController
94* RISC-V Platform Level Interrupt Controller
95* STM32 DMA
96* ZynqMP IPI
97* ZynqMP Platform Management Unit
98
991.15.2 - 2024.08.18
100-------------------
101
102Added and improved architecture support:
103
104* support for Core-Local Interrupt Controller (CLIC) in RISC-V, enabling several flavors of the (not yet ratified) RISC-V Fast Interrupts specification
105* various improvements to x86 architecture support, including virtual address translation fixes
106* RISC-V custom instructions now have to follow length encoding patterns, as specified in the ISA manual (section 1.2 Instruction Length Encoding)
107* fixed fetching RISC-V instruction with PMP boundary set exactly after the instruction
108* fixed setting MPP after mret on RISC-V platforms without user privilege level
109* fixed RISC-V PMPCFG CSR operations not respecting the ``write any, read legal`` semantics
110* fixed RISC-V fcvt.wu.s, fcvt.lu.s and vmulh.vv instructions implementation
111
112Added and improved platform descriptions:
113
114* NPCX9 platform with improved bootrom implementation
115* Chip revision tags in the Renesas DA14592 platform
116* Fixed MPU regions configuration in Cortex-R8 SMP platform description
117* Nuvoton NPCX9M6F EVB
118* Microchip Mi-V, with correct Privileged Architecture version
119
120Added peripheral models:
121
122* MAX32655 UART
123* NEORV32 Machine System Timer
124* NEORV32 UART
125* KB1200 UART
126* RISC-V Core-Local Interrupt Controller
127* STM32WBA CRC
128* VeeR EL2 RISC-V core with custom CSRs
129
130Added demos and tests:
131
132* HiRTOS sample running on a dual-core Cortex-R52
133* Xen hypervisor running on Cortex-R52 with Zephyr payload
134* remoteproc demo on ZynqMP, with Linux running on Cortex-A loading Zephyr to Cortex-R
135* NPCX9 Zephyr-based tests for GPIO and I2C
136* synthetic tests for RISC-V Core-Local Interrupt Controller
137* RISC-V Core-Local Interrupt Controller tests based on riscv-arch-test
138* Zephyr bluetooth HR demo running on 4 nRF52840 in host / controller split communicating with HCI UART
139* Zephyr running hello_world sample on X86
140* regression test for custom RISC-V instructions not following the length encoding pattern
141
142Added features:
143
144* CPU cache analysis tool using the ExecutionTracer interface
145* initial GPIO support via External Control API
146* Wait For Lines On Uart keyword for Robot Framework for multiline matching
147* ability to specify aliases for names of constructor parameters in REPL, simplifying adaptation to API changes
148* ability to specify implemented privilege levels on RISC-V processors
149* initial SMC handling for ARMv8 CPUs
150* ability to load snapshots (.save files) from CLI
151* mechanism for enabling sysbus transaction translations for unimplemented widths in runtime
152* network based logging backend
153* option to assert match on the next line in UART keywords for Robot Framework
154* remapping exception vector in Arm CPUs having neither VBAR nor VTOR
155* support for declaring clusters of cores in REPL files
156* support for loading gzip compressed emulation snapshots
157* NetMQ and AsyncIO integration
158
159Changed:
160
161* ExecutionTracer logs additional physical address on memory access when MMU translation is involved
162* ExecutionTracer tracks values written to/read from memory if TrackMemoryAccesses parameter is used
163* added the ability to override build properties
164* added the ability to track memory accesses when address translation is active
165* External Control client \`run_for\` example can now progress time multiple times without reconnecting
166* machine by default disallows spawning a GdbServer with CPUs belonging to different architectures.
167* made user-configured $CC the default value for Compiler and LinkerPath and $AR for ArPath
168* paths encapsulated in quotes can handle names with whitespaces
169* paths in Monitor can be encapsulated in quotes in more contexts
170* improved precision of timer reconfiguration
171* translation library will attempt to expand its code buffer when running out of space
172* improved flexibility of parameter passing to registration points in REPL, as used by GIC
173* improved flexibility of the logLevel command
174* improved Renode pausing responsiveness when using TAP interface on Linux
175* improved performance of External Control API renode_run_for function
176* simplified per-core registration API in REPL files
177* renamed \`\`PrivilegeArchitecture\`\` to \`\`PrivilegedArchitecture\`\` on RISC-V
178* unified STM32 CRC peripherals so they use a single class configured with the STM32Series enum
179* co-simulated peripherals protocol on writes directed to system bus
180* MacOS now uses \`\`mono\`\` instead of \`\`mono64\`\` as a runner, which is equivalent since Mono 5.2
181* time updates are now deferred when possible to improve performance
182* virtual time precision is now 1 nanosecond instead of 1 microsecond
183* limited unnecessary invalidations of memory for multicore platforms
184* CPU-specific peripheral registrations have now higher priority than the global ones
185* undefined AArch64 ID registers are now treated as RAZ
186
187Fixed:
188
189* initialization of VFP registers for Armv8 CPUs
190* support for building tlibs with clang
191* interruption of instructions block on precise pause
192* accessing RISC-V counter CSRs for lower privilege levels for privileged specification 1.10 and newer
193* Time Framework errors when handling halted CPUs
194* running renode and renode-test commands via symlinks
195* serialization of ARMv8-A CPUs
196* serialization of some complex classes
197* listing of registration points for peripherals registered at both cpu and sysbus
198* handling of watchpoints set at addresses above the 32-bit range
199* crashes when using both aliased attribute name and normal name at the same time
200* possible hang when disabling logging of peripheral accesses
201* handling of exclusive store/load instructions for ARMv7-R CPUs
202* handling of interrupting execution in GDB on multicore platforms in all-stop mode
203* allocating huge amount of memory for translation cache on CPU deserialization
204* invalid undefined instruction faults for Armv8 CPUs
205* GDB getting confused when receiving Ctrl-C on multicore platforms
206* LSM303 peripheral test
207* CS7034 \"specified version string does not conform to recommended format\" warning appearing when building
208* Vegaboard-RI5CY demo failing to boot
209* exception thrown on an empty message in log when failing a Robot test
210* linking and imports in the External Control library
211* nonstandard configuration byte when disabling Telnet line mode
212* printing skipped test status
213* version information not appearing correctly after running \`renode --help\`
214
215Improvements in peripherals:
216
217* Ambiq Apollo4 System Timer
218* Arm Generic Interrupt Controller
219* ARM Generic Timer
220* Arm Performance Monitoring Unit
221* Arm Snoop Control Unit
222* Arm CPUs
223* Arm Signal Unit
224* Gaisler APB UART
225* K6xF Multipurpose Clock Generator
226* KB1200 UART
227* LPC USART
228* Macronix MX25R
229* MAX32650 WDT
230* Mi-V Core Timer
231* MPFS SD controller
232* NEORV32 UART
233* NPCX MDMA
234* NPCX ITIM, including both 32 and 64-bit flavors of the peripheral
235* NPCX TWD
236* NPCX SMBus
237* NPCX UART
238* nRF52840 CLOCK
239* NVIC
240* Renesas RA6M5 SCI
241* RCAR UART
242* SAMD20 UART
243* SD card
244* STM32 UART
245* STM32 LTDC
246* STM32 CRC
247* STM32 Timer
248* STM32F4 Flash with added mass erase and sector erase commands
249* STM32L0 RCC model with added support for Low-power timer (LPTIM) reset
250* STM32WBA GPDMA
251* SynopsysDWCEthernetQualityOfService incorrectly resetting transmit/receive buffer position when suspending its DMA engine
252* VirtIO
253* Zynq7000 System Level Control Registers
254
2551.15.1 - 2024.06.14
256-------------------
257
258Added and improved architecture support:
259
260* improved support for SMP processing in Armv8 and Armv7
261* configuration signals for Arm cores
262* LOB extension (without tp variants) for Armv7
263* VSTRW instruction support from Armv8.1-M MVE
264* support for additional Arm CP14 and CP15 registers
265* Armv8 LDM (user) instruction will update registers predictably even when executing in System Mode, instead of being UNPREDICTABLE according to Arm documentation
266* basic support for Cortex-A5 CPU type
267* DCIMALL instruction for Aarch32 CPUs
268* IMP_CDBGDCI instruction for Cortex-R52 CPUs
269
270Added and improved platform descriptions:
271
272* timer interrupts configuration for STM32F4-based platforms
273* improvements to networking configuration for StarFive JH7100
274* improvements to Renesas R7FA2E1A9, R7FA2L1A, R7FA4M1A, R7FA6M5B, R7FA8M1A SoC
275* improvements to UT32M0R500 SoC
276* platform with example sensor connections for CK-RA6M5
277* multicore Cortex-R52 platform
278* multicore Cortex-A53 with GICv3 in SMP configuration
279* improvements to the Cortex-R52 platform
280* GIC architecture version selection for many Arm platforms
281* added Arm signal unit support for Cortex-R8 and multicore Cortex-R8 platforms
282* merged Zynq Ultrascale+ into a single platform with both Cortex-A and Cortex-R CPUs
283* updated peripherals registration for STM32F0, STM32F4, STM32F746, STM32G0, STM32H743, STM32L071, STM32L151, STM32L552, STM32WBA52 SoCs
284
285* Renesas CK-RA6M5 board
286* Beagle-V Fire, with Microchip's PolarFire SoC
287
288Added peripheral models:
289
290* Gaisler ADC
291* NPCX GPIO
292* NPCX SMBus
293* NXP OS Timer
294* Renesas DA SPI
295* Renesas RA IIC
296* Renesas DA14 GeneralRegisters
297* Renesas DA14 XTAL32MRegisters
298* S32K3XX EMAC
299* S32K3XX FlexCAN
300* S32K3XX FlexIO with SENT and UART endpoints
301* S32K3XX GMAC
302* S32K3XX Low Power IIC
303* STM32H7 Crypto Accelerator
304* STM32H7 QuadSPI
305* STM32WBA GP DMA
306* UT32 CAN
307* VirtIO Filesystem device
308* ZynqMP Inter Processor Interrupt controller
309* ZynqMP Platform Management Unit
310* ZMOD4410 and ZMOD4510 air quality sensors
311* AK09916 and AK09918 3-axis electronic compass sensors
312* generic configurable Pulse Generator block
313
314Added demos and tests:
315
316* I2C echo test for Renesas DA14592
317* addtional unit tests for CRCEngine
318* I2C mode tests for Renesas RA8M1 SCI
319* BeagleV-StarLight ethernet tests
320* serialization tests for Armv8-A and Armv8-R cores
321* Cortex-R8 Zephyr tests
322* configuration signals tests for Cortex-R8
323* NXP S32K388 Low Power SPI test
324* HiRTOS samples (including multicore) on Cortex-R52
325* Renesas RA6M5 platform tests including SCI SPI, ICM20948, HS3001, IIC
326* EXT2 filesystem Zephyr tests based on SiFive FU740
327* STM32H7 Nucleo test for CRYPTO and SPI
328* tests for GDB accessing peripheral space
329* regression tests for ARMv8 Security State and Exception Level after core initialization
330* VirtIO Filesystem directory sharing test
331* Zephyr SMP test for Cortex-R52
332* aws_cc test for the Renesas CK-RA6M5 board
333* machine log level test
334* range locking tests in sysbus.robot
335
336Added features:
337
338* mechanism for integrating Renode with SystemC simulations
339* VirtIO-based directory sharing with host OS
340* new GIC redistributor regions registration methods for multi-core platforms
341* CAN analyzer support in Wireshark integration
342* CPU-specific function names lookup support
343* ability to clear CPU-specific or global function names lookups
344* SENT protocol support
345* LIN protocol support
346* IADC interface for generic ADC control
347* support for specifying additional offset to function names addresses in lookups
348* locking sysbus accesses to specified ranges
349* easier access to externals in Python scripts via externals variable
350* external control API with C client library
351* integration with dts2repl tool
352* virtual CAN host integration via SocketCAN bridge
353* ability to control log level of the whole machine with the logLevel command
354* ability to specify Privileged Architecture Version 1.12 on RISC-V processors
355* optional CPU context in locking sysbus accesses to peripherals
356
357Fixed:
358
359* Migrant not keeping track of all child-parent connections in the Reflection mode
360* Arm PMSAv8 configuration using stale values in some circumstances
361* Armv7 CP15 registers - ADFSR, AIFSR, non-MP BP*, DC* and IC* registers
362* Armv7 and older memory barrier instructions and CP15 registers (DMB, DSB and DWB)
363* read accesses to write-only Aarch32 coprocessor registers
364* Armv7/Armv8 MPIDR register
365* breakpoints serialization and deserialization
366* calculation of target EL and interrupt masking for Armv8 Aarch32
367* crashes in certian register configurations for Armv8 Aarch32
368* FIQs being disabled with no way of enabling them for GICv3 and onwards
369* NA4 range end address calculation in RISC-V PMP
370* effective PMP configuration calculation in RISC-V when mstatus.MPRV is set
371* RISC-V vector load and store segment instructions
372* crashes when a breakpoint and a watchpoint trigger at the same instruction
373* RISC-V PMP NAPOT grain check implementation
374* TranslationCPU's CyclesPerInstruction changes during runtime not being automatically applied to ArmPerformanceMonitoringUnit's cycle counters
375* unmapping of memory segments
376* unregistering peripherals
377* valid Ethernet frames sometimes getting rejected due to CRC mismatch
378* virtual time advancing too far when pausing the emulation
379* CCSIDR for L1 data cache in Arm Cortex-R8
380* CCSIDR for L2 cache in Arm Cortex-R5/R8
381* renode-test --include behavior for NUnit test suites
382* atomic instructions handling when running multithreaded program on a single CPU machine
383* automatic 64-bit access translations on system bus
384* crashes on Cortex-M construction if NVIC is already attached to a different core
385* exclusive load/store instructions on Armv8
386* failures in monitor-tests.Should Pause Renode under certain conditions
387* invalid Asciinema generation if the UART output contains a backslash character
388* logging value written on an unhandled tag write
389* names of Arm TCM registers
390* pausing on SemihostingUart events in Xtensa CPUs
391* reporting thread ID as decimal number in GDB's query command - cpuId restricted to 32
392* selecting PMP access mode for RISC-V cores
393* serialization for Armv8-A and Armv8-R cores
394* suppressed SP and PC initialization on halted Cortex-M cores
395* cache selection in Armv7 and older CPUs, now verified with CLIDR when reading CCSIDR
396* precise pausing causing parts of the instruction to be executed twice
397* ARM MPU ignoring memory restriction check to the page that was previously accessed even if region/subregion permissions don't match
398* Armv8-R AArch32 executing in Secure State instead on Non-Secure
399* Armv8-R changing Security State, while it should never do so
400* Armv8 cores not propagating their Exception Level and Security State outside tlib correctly after creation
401* DMAEngine memory transactions with when not incrementing source or destination addresses
402* RISC-V BEXT instruction handling
403* RISC-V xRET instructions not changing status bits correctly
404* SocketServerProvider not closing correctly without any connected clients
405* detection of test failures which should be retried when renode-test's --retry option is used
406* handling peripheral accesses when debugging with GDB
407* initialization of PC and SP on leaving reset on Cortex-M
408* printing of possible values for invalid Enum arguments in Monitor commands
409* heterogeneous platforms handling in GDB
410* single step execution mode in Xtensa cores
411* variable expansion in Monitor
412
413
414Changed:
415
416* Terminal Tester delayed typing now relies on virtual time
417* removed AdvancedLoggerViewer plugin
418* improved TAP networking performance on Linux
419* reduced overhead of calling tlib exports
420* TranslationCPU's CyclesPerInstruction now accepts non-integer values
421* CPU Step call now automatically starts the emulation
422* upgraded Robot Framework to 6.1, to work with Python 3.12
423* renamed the ID property of Arm cores to ModelID
424* improved Arm core performance
425* improved logging performance if lower log levels are not enabled
426* added host memory barrier generation to TCG
427* actions delayed with machine.ScheduleAction can now execute as soon as the end of the current instructions block (it used to be quantum)
428* CPU's SingleStepBlocking and SingleStepNonBlocking ExecutionModes were replaced by SingleStep and emulation.SingleStepBlocking was added
429* blockOnStep was removed from StartGdbServer
430* single-step-based tests were refactored due to automatic start on Step and ExecutionMode changes
431
432Improvements in peripherals:
433
434* Andes AndeStarV5Extension.cs - Added Configuration and Crash Debug CSRs
435* Arm Generic Interrupt Controller, with changes to v1, v2 and v3 versions, focused on improving multicore support for both Armv7 and Armv8 platforms
436* Gaisler APBUART
437* Gaisler GPTimer
438* Gaisler Ethernet
439* Gaisler MIC
440* Kinetis LPUART
441* NPCX FIU
442* NPCX Flash
443* NXP LPSPI
444* Renesas RA8M1 SCI
445* Renesas DA I2C
446* Renesas DA Watchdog
447* Renesas DA14 DMA
448* Renesas RA6M5 SCI
449* Renesas DA DMABase
450* S32K3XX LowPowerInterIntegratedCircuit
451* SDCard
452* STM32 PWR
453* STM32F4 CRC
454* STM32H7 RCC
455* Synopsys DWCEthernetQualityOfService
456* Synopsys EthernetMAC
457* VirtIOBlockDevice, now based on VirtIO MMIO version v1.2
458* Xilinx IPI mailbox
459* BME280 sensor
460* ICM20948 sensor
461* SHT45 sensor
462
463
4641.15.0 - 2024.03.18
465-------------------
466
467Added architecture support:
468
469* initial support for ARMv7-R and Cortex-R8, verified with ThreadX and Zephyr
470* initial support for Cortex-A55
471* initial support for Cortex-M23 and Cortex-M85
472* support for RISC-V Bit Manipulation extensions - Zba, Zbb, Zbc and Zbs
473* support for RISC-V Half-precision Floating Point (Zfh) extension, including vector operations
474* support for RISC-V Andes AndeStar V5 ISA extension
475
476Added and improved platform descriptions:
477
478* generic Cortex-R8 platform
479* Renesas EK-RA2E1 board with R7FA2E1A9 SoC
480* Arduino Uno R4 Minima platform with Renesas F7FA4M1A SoC
481* Renesas CK-RA6M5 board with R7FA6M5B SoC, with initial radio support
482* Renesas EK-RA8M1 board with R7FA8M1A SoC
483* Renesas R7FA2L1A SoC
484* Renesas DA14592 SoC
485* Renesas RZ/T2M-RSK board with RZ/T2M SoC
486* Gaisler GR712RC SoC with UART, timer, GPIO, FTMC and Ethernet
487* Gaisler GR716 SoC with UART, timer and GPIO
488* Gaisler UT32M0R500 SoC with UART, timer and GPIO
489* NXP S32K388 with UART, timers, watchdog, SIUL2, SPI, Mode entry module and others
490* NXP LPC2294 SoC with UART, CAN, timer and interrupts support
491* Xilinx Zynq UltraScale+ MPSoC platform support with single core Cortex-A53, UART, GPIO and I2C
492* singlecore Cortex-R5 part of Zynq UltraScale+ MPSoC platform with UART, TTC, Ethernet and GPIO
493* Nuvoton NPCX9 platform support with UART, various timers, SPI, flash and other peripherals
494* ST Nucleo H753ZI with STM32H753 SoC with a range of ST peripherals
495* updates to Armv8-A platforms
496* updates to Ambiq Apollo4
497* updates to Xilinx Zynq 7000
498* various updates in STM32 platform files
499
500Added peripheral models:
501
502* ABRTCMC, I2C-based RTC
503* Altera JTAG UART
504* Ambiq Apollo4 Watchdog
505* Arm Global Timer
506* Arm Private Timer
507* Arm SP804 Timer
508* ArmSnoopControlUnit
509* BCM2711 AUX UART
510* BME280 sensor
511* Betrusted EC I2C
512* Betrusted SoC I2C
513* Bosch M_CAN
514* CAN to UART converter
515* Cadence Watchdog Timer
516* Gaisler APBUART
517* Gaisler GPIO
518* GigaDevice GD32 UART
519* HS3001 sensor
520* ICM20948 sensor
521* ICP10101 sensor
522* Infineon SCB UART
523* LINFlexD UART
524* MB85RC1MT Ferroelectric Random Access Memory
525* MXIC MX66UM1G45G flash
526* NPCX FIU
527* NPCX Flash
528* NPCX HFCG
529* NPCX ITIM32
530* NPCX LFCG
531* NPCX MDMA
532* NPCX Monotonic Counter
533* NPCX SPIP
534* NPCX Timer and Watchdog
535* NPCX UART
536* NXP LPC CAN
537* NXP LPC CTimer
538* NXP LPC USART
539* OB1203A sensor
540* PL190 vectored interrupt controller
541* PL330_DMA (CoreLink DMA-330) Controller
542* Renesas DA14 DMA peripheral
543* Renesas DA14 GPIO
544* Renesas DA14 General Purpose Timer
545* Renesas DA14 UART
546* Renesas DA14 I2C
547* Renesas DA16200 Wi-Fi module
548* Renesas RA series AGT
549* Renesas RA series GPIO
550* Renesas RA series GPT
551* Renesas RA series ICU
552* Renesas RA series SCI
553* Renesas RZ/T2M GPIO
554* Renesas RZ/T2M SCI
555* S32K3XX Miscellaneous System Control Module
556* S32K3XX Periodic Interrupt Timer
557* S32K3XX Real Time Clock
558* S32K3XX Software Watchdog Timer
559* S32K3XX System Integration Unit Lite 2
560* S32K3XX System Timer Module
561* S32K3XX FlexIO stub
562* S32K3XX Mode Entry Module
563* SHT45 temperature/humidity sensor
564* SPI NAND flash
565* STM32WBA PWR
566* Samsung K9 NAND Flash
567* Smartbond UART
568* Universal Flash Storage (JESD220F)
569* Universal Flash Storage Host Controller (JESD223E)
570* XMC4XXX UART
571* ZMOD4xxx sensor
572* Zynq 7000 System Level Control Registers
573
574
5751.14.0 - 2023.08.08
576-------------------
577
578Added architecture support:
579
580* initial support for ARMv8-A, verified with a range of software, from Coreboot and U-Boot to Linux
581* initial support for ARMv8-R, verified with U-Boot and Zephyr
582
583Added and improved platform descriptions:
584
585* generic Cortex-A53 platform, in flavors with GICv3 and GICv2
586* generic Cortex-A78 platform
587* generic Cortex-R52 platform
588* HiFive Unmatched platform support, with UART, PWM, I2C, GPIO, Ethernet, QSPI and other peripherals
589* Nucleo WBA52CG with STM32WBA52
590* updated OpenTitan and EarlGrey platform to a newer version
591* various updates in STM32 platform files
592* translation support for Espressif ESP32 chips
593
594Added peripheral models:
595
596* ARM GIC, compatible with various specification versions
597* ARM generic timer
598* CMSDK APB UART
599* Cypress S25H Flash
600* EFR32xG2 I2C
601* EFR32xG2 RTCC
602* EFR32xG2 UART
603* Marvell Armada Timer
604* MXC UART
605* OMAP Timer
606* OpenTitan Entropy Distribution Network
607* Quectel BC66
608* Quectel BG96
609* SI7210 Temperature sensor
610* SPI multiplexer
611* STM32F4 CRC
612* STM32F4 Flash
613* STM32H7 Flash
614* STM32WBA Flash
615* STM32H7 Hardware Semaphore
616* STM32H7 SPI
617* STM32WBA SPI
618* STM32WBA ADC
619* Synopsys DWC Ethernet QoS model, along with Linux-based tests
620* TMP108 Temperature sensor
621
622Added demos and tests:
623
624* Cortex-A53 and Cortex-A78 running Coreboot, ATF and Linux
625* Zephyr running echo_client demo on STM32F7-disco with Quectel BG96
626* basic Cortex-A53 Zephyr ``hello-world`` test and sample
627* additional Zephyr tests for Cortex-A53: ``synchronization``, ``philosophers``, kernel FPU sharing
628* seL4 Adder Sample test for Cortex-A53
629* range of Zephyr tests for Cortex-R52, along with custom-made, synthetic tests
630* precise pausing tests for LED and terminal tester
631
632Added features:
633
634* renode-test allows to run tests with a specified tag via the ``--include`` switch
635* DPI interface for external HDL simulators, supporting AXI4 interface
636* portable package creation on dotnet
637* option to have Robot test pause execution deterministically after a match in various testers: UART, LED, log
638* duty cycle detection in LED tester
639* option to load files (e.g. raw binaries, hex files) to different localizations, like memories
640* support for relative paths in REPL file ``using`` directive
641* MPU support for Cortex-M
642* ``FAULTMASK`` register in Cortex-M
643* support for Trace Based Model performance simulator by Google
644* read and write hooks for peripherals
645* DPI interface support for co-simulating with RTL, with initial support for AXI4 bus
646* build.sh ``--profile-build`` switch to enable easier profiling of translation libraries
647* mechanism for progressing virtual time without executing instructions
648* support for subregions in Cortex-M MPU
649* support for FPU exceptions for Cortex-M
650* quad word (64-bit) peripherals API
651* ``CSV2RESD`` tool, for easy generation of RESD files
652* automatic selection of port used to communicate between Renode and Robot
653* option to pause emulation of Robot keywords
654* support for NMI interrupts in RISC-V
655* option to save Renode logs for all tests
656* ``Execute Python`` keyword in Robot tests
657
658Changed:
659
660* GDB interacts with Renode much faster
661* Renode now uses Robot Framework 6.0.2 for testing (with an option to use other versions at your own risk)
662* RESD format now accepts negative ``sampleOffsetTime``
663* HEX files loader now supports extended segment address and start segment address sections
664* GDB ``autostart`` parameter now starts the simulation as soon as the debugger is connected
665* VerilatorIntegrationLibrary is now part of Renode packages
666* improved performance of the virtual time handling loop
667* improved parsing of RESD files
668* improved memory allocation mechanism to allocate memory regions larger than 2GiB
669* support for mapping memories on very high offsets
670* improved GDB connection robustness
671* exposed Monitor as a variable in Python hooks
672* improved the GDB compare helper script
673* improved handling of input files in TFTP server module
674
675Fixed:
676
677* cursor blinking in terminal on Windows
678* crash when NetworkServer tried to log an invalid packet
679* race condition when trying to pause during the machine startup
680* platform serialization when CPU profiler is enabled
681* limit buffer behavior in verilated peripherals when they are reset
682* registration is no longer taken into account when looking for dependency cycles in REPL files
683* exception when issuing a DMA transaction during register access
684* reported PC on exception when executing vector instructions in RISC-V
685* several RISC-V vector instructions handling, e.g. ``vfredosum``, ``vsetivli`` and ``vector_fpu``
686* invalid instruction block exiting on RISC-V
687* handling of ``c.ebreak`` instruction in RISC-V, allowing for software breakpoints
688* building fixes on dotnet
689* removing of IO access flag from memory pages
690* invalidation of dirty translation blocks
691* handling of MMU faults on address translations
692* serialization of RESD files
693* automatic creation of TAP interface on Linux
694* ARM LDA/STL instructions decoding
695* handling of platforms containing both 32- and 64-bit CPUs
696* file permissions in .NET portable packages
697* handling of non-resettable register fields
698* several RISC-V vector instructions
699* handling of the context menu in the Monitor window
700* support for Cortex-M4F in LLVMDisassembler
701* packets matching method in NetworkInterfaceTester
702* address calculations in DMA engine
703* custom build properties handling in Renode build script
704* handling of time reporting and empty test cases in renode-test
705
706Improvements in peripherals:
707
708* AmbiqApollo4 Timer
709* ArrayMemory
710* AS6221 Temperature sensor
711* AT Command Modem
712* AT91 Timer
713* Cadence UART
714* Cortex-M Systick
715* EF32MG12 LDMA
716* Ibex
717* LIS2DW12 Accelerometer
718* LiteX I2C
719* LSM6DSO
720* MAX30208 Temperature sensor
721* MAX32650 GPIO
722* MAX32650 I2C
723* MAX32650 RTC
724* MAX32650 SPI
725* MAX32650 Timer
726* MAX32650 TPU
727* MAX32650 WDT
728* MAX86171 AFE
729* nRF52840 SPI
730* nRF52840 I2C
731* nRF52840 GPIO
732* OpenTitan HMAC
733* OpenTitan PLIC
734* OpenTitan ROM
735* OpenTitan OTP
736* OpenTitan Key Manager
737* OpenTitan Flash
738* OpenTitan Reset Manager
739* OpenTitan KMAC
740* OpenTitan CSRNG
741* OpenTitan Alert Handler
742* OpenTitan Timer
743* OpenTitan OTBN
744* PL011 UART
745* Quectel BC660K
746* SAMD5 UART
747* SiFive GPIO
748* Silencer
749* STM32 DMA
750* STM32G0 DMA
751* STM32 EXTI, with specific implementations for STM32F4, STM32H7 and STM32WBA
752* STM32 GPIO
753* STM32F7 I2C
754* STM32L0 LPTimer
755* STM32L0 RCC
756* STM32H7 RCC
757* STM32F4 RTC
758* STM32 SPI
759* STM32 Timer
760* STM32F7 USART
761
7621.13.3 - 2023.02.22
763-------------------
764
765Added and improved platform descriptions:
766
767* basic Adafruit ItsyBitsy M4 Express platform with UART and memories
768* various STM32 platforms with improved EXTI connections, IWDG configuration, and new CRC, Flash, PWR, RCC, and LPTimer models added to selected platforms
769* MAX32650 with a new I2C model
770* Zynq 7000 with new I2C, SPI, UART and TTC models
771* Apollo 4 with a new Timer model and a ``program_main2`` bootrom function mock
772* OpenTitan Earlgrey with new OTBN accelerator, AON Timer, System Reset controller, Entropy source, and SRAM controller models
773* nRF52840 with a new EGU model
774* EFR32MG1x with a new LDMA model and improved USART interrupt connections
775
776Added peripheral models:
777
778* Apollo4 IOMaster I2C mode
779* Apollo4 Timer
780* AS6221 skin temperature sensor
781* Cadence I2C controller
782* Cadence SPI controller
783* Cadence TTC
784* Cadence UART
785* Cadence xSPI controller
786* EFR32MG12 LDMA controller
787* LIS2DW12 accelerometer sensor
788* LC709205F Fuel Gauge
789* Macronix MX25R flash
790* MAX30208 temperature sensor
791* MAX32650 I2C controller
792* MAX77818 Fuel Gauge
793* MAX86171 Optical AFE
794* NRF52840 EGU
795* OpenTitan AON Timer
796* OpenTitan Big Number Accelerator (OTBN) full model
797* OpenTitan ClockManager stub
798* OpenTitan Entropy Source controller
799* OpenTitan SRAM controller
800* OpenTitan SystemReset controller
801* Quectel BC660K radio
802* RV8803 RTC
803* STM32F0 CRC
804* STM32H7 RCC
805* STM32L0 Flash controller
806* STM32L0 Low Power Timer
807* STM32L0 PWR
808* TMP103 temperature sensor
809
810Added demos and tests:
811
812* RTC mode unit test
813* Adafruit ItsyBitsy M4 Express Zephyr shell_module test
814* STM32L072 tests for: DMA, PVD interrupt, SPI flash, IWDG, LPUART, EEPROM, and CRC
815* STM32F4 tests for RTC and running an STM32CubeMX app
816* Zynq tests for I2C, TTC, SPI flash, xSPI, and UART based on Linux
817
818Added features:
819
820* support for RESD - Renode Sensor Data format, allowing users to provide multiple sensors with time-coordinated data specific for a given sensor; currently supported in MAX86171, MAX30208, AS6221, and LSM6DSO
821* reorganized CPU classes and interfaces, allowing for easier integration of external CPU simulators
822* IOMMU, with example usage in WindowIOMMU, WindowMMUBusController, and SimpleDMA
823* new key bindings in the Monitor: Ctrl+D for closing the window and Ctrl+U for clearing the current input
824* new key bindings in all terminal windows: Shift+Up/Down arrow for line scrolling and Shift+Home/End for jumping to the beginning and the end of the buffer
825* option to configure UART window location offsets via the config file
826* support for 64-bit bus accesses and 64-bit peripherals
827* support non-resettable peripheral registers and register fields
828* option to register hooks to be called whenever a RISC-V register is accessed - this can be used to emulate non-standard implementation of these registers
829* option to set CPU exceptions from the outside of the CPU
830* Robot keyword to verify that GPIO has a specified state for a given period of time
831* verbose mode in Robot tests
832
833Changed:
834
835* Robot tests do not need a header with settings and keywords anymore
836* changed the conditional syntax in Robot tests to use IF/ELSE for compatibility with newer Robot Framework versions
837* cleaned up tests-related file organization in the repository
838* simplified flags for renode-test under dotnet
839* added skip_mono and skip_dotnet tags to Robot tests
840* removed internal signal mappings from STM32 EXTI, making the interrupt routing more explicit in REPL files
841* console mode will be started instead of telnet when the UI fails to start
842* reset can now be executed on a not started machine
843* expanded the Execution Tracer with ``TrackMemoryAccesses`` and ``TrackVectorConfiguration`` options, along with disassembler-generated info
844* OnMemoryAccess hooks now receive the current PC as a parameter
845* changed the CRCEngine API and improved implementation
846* ELF symbol lookup will now skip several types of unimportant symbols
847* tags can now have zero width to ease the creation of variable width registers
848* added option to invert reset logic in AXI4Lite
849* added handling of the ``WSTRB`` signal in AXI4Lite
850* added support for various address lines connections in Wishbone
851* added various access lengths support for verilated peripherals
852* timeout value for Verilator connections can now be defined in compile time
853* all architectures now sync their PC on memory accesses
854* UARTBase is now a container for IUART devices
855* added option to clear all event subscribers in LimitTimer
856* added ITimer interface for handling basic timer properties
857* extended the excluded assembly list in TypeManager to speed up startup on dotnet
858
859Fixed:
860
861* flushing of the log when using the ``lastLog`` command
862* deadlock when using the ``--console`` mode on dotnet with collapsed log entries enabled
863* Wireshark handling on macOS
864* TAP support on macOS
865* Asciinema usage in multi-machine setups
866* closing of Renode in several problematic scenarios
867* handling of end of file detection in HEX parsing
868* robustness of BLESniffer
869* timestamps discrepancies in file logs and console logs
870* compilation under Visual Studio on Windows
871* compilation on Windows when the PLATFORM environment variable is set
872* graph titles for metrics visualizer
873* handling of peripheral regions in Profiles
874* file sharing and access type settings for open files
875* floating point registers access on RV32
876* several RISC-V Vector instructions
877* crash when the CPU is created with an invalid type
878* RISC-V PMP config reading and writing and NAPOT decoding
879* translation cache invalidation in multicore RISC-V scenarios
880* SEV generation on Cortex-M
881* handling of multi-instructions blocks in Xtensa
882* execution of too many instructions in a single block
883* button sample tests for STM32F072q
884* fastvdma co-simulation test
885* qCRC packet handling in GDB
886* decoding of GDB packets, selecting the command handler based on the longest match for a packet
887* address translation in GDB
888* UARTToSpiConverter logic and user experience
889* handling of Step parameter in ClockEntry
890* changing of frequency for divider calculation in ComparingTimer
891* cleanup of old clock entries
892
893Improvements in peripherals:
894
895* AmbiqApollo4 IOMaster
896* AmbiqApollo4 RTC
897* AthenaX5200
898* Cadence TTC
899* Dummy I2C Slave
900* EFR32 CMU
901* EFR32 USART
902* EFR32 RTCC
903* Generic SPI Flash
904* HiMax HM01B0
905* I2C dummy device
906* LSM6DSO IMU
907* Mapped Memory
908* Micron MT25Q
909* MPFS PDMA
910* NRF52840 SPI
911* NRF52840 I2C
912* NRF52840 RTC
913* NVIC interrupt controller
914* OpenCores I2C
915* OpenTitan I2C
916* OpenTitan Flash controller
917* OpenTitan LifeCycle controller
918* OpenTitan ROM controller
919* SAMD5 UART
920* SI70xx temperature sensor
921* SiFive GPIO
922* STM32 GPIO
923* STM32 SPI
924* STM32 Timer
925* STM32F4 IndependentWatchdog
926* STM32F4 RTC
927* STM32F7 I2C
928* STM32F7 USART
929* STM32L0 RCC
930* STM32G0 DMA
931
9321.13.2 - 2022.10.03
933-------------------
934
935Added platforms:
936
937* Ambiq Apollo4 with ADC, GPIO, IO Master, System Timer, RTC, UART and other peripherals
938* STM32L07x with ADC, GPIO, I2C ,RTC, SPI, Timer, USART, IWDG, DMA and other peripherals (RCC)
939* verilated Ibex core with the rest of the platform natively in Renode
940
941Added models:
942
943* MAX32650 TPU with CRC32 support
944* basic support for MAX32650 ADC
945* MAX32650 SPI
946* MAX32650 Watchdog
947* LSM6DSO IMU
948* EFR32xG12DeviceInformation
949* External CPU stub as a base for integration of other CPU simulators
950* OpenTitan SPI host
951* OpenTitan I2C host
952* OpenTitan Alert Handler, along with updates to other OpenTitan peripherals with alert functionality
953* new algorithms and cores in AthenaX5200
954* EFR32MG1 BitAccess
955* i.MX RT GPTimer
956
957Added demos and tests:
958
959* STM32L072 Zephyr shell_module demo and test
960* Ambiq Apollo4 Hello World example from Ambiq Suite and various peripheral tests
961* MAX32652 EVKIT Hello World example from MAX32652 SDK
962* FPGA ISP co-simulation demo and test
963
964Added features:
965
966* experimental support for .NET 6 framework
967* guest-application profiling for ARM
968* Interrupt hooks for ARM
969* BLE sniffer support for Wireshark
970* Perfetto profiler format support in guest-application profiling, along with process detection on RISC-V
971* binary output format of execution tracer, along with a Python helper script to decode data
972* new Run Until Breakpoint keyword for Robot tests
973* verbose mode in Robot tester
974* region of interest support in FrameBufferTester
975* framework for providing timestamped sensor data
976* WishboneInitiator bus in Verilator support
977* nightly “sources” package with the whole content required for building Renode offline
978
979Organizational improvements:
980
981* added GitHub issue and PR templates, along with an `issue reproduction repository <https://github.com/renode/renode-issue-reproduction-template>`_
982updated contributing instructions
983
984Changed:
985
986* added mapping for l2ZeroDevice in PolarFire SoC
987* added caching of canvas bounds in TermSharp for improved performance
988* restructured height map storage in TermSharp
989* updated descriptions of SLTB004A and EFR32MG12 targets
990* restructured CPU-related class hierarchy
991* disabled TCG optimizations and liveness analysis for improved performance
992* updated OpenTitan supported version, changing a range of OpenTitan peripherals
993* major refactor of VerilatorIntegrationLibrary, with new interfaces and code restructuration
994* updated symbol exclusion rules not to include $x symbol names in SymbolLookup
995* disabled TLB flushing in RISC-V on mode change for improved performance
996* allowed more than one page permission at a time in RISC-V, reducing the number of address translations
997* improved output of Robot tests with timestamps and explicit test results after each suite
998* SD card controller now supports more card types
999
1000Fixed:
1001
1002* PMP implementation for RISC-V
1003* several RISC-V vector instructions including floating-point vector instructions
1004* 'Take Screenshot' button in VideoAnalyzer
1005* non-blocking CPU stepping
1006* crash when loading file without sufficient permissions
1007* external MMU not respecting the `no_page_fault` flag
1008* issues with concurrent creation of config file
1009* indeterminism of sel4_extensions test
1010* GDB Stub not issuing an error when trying to add zero-sized watchpoint
1011* handling of watchpoints on big-endian platforms
1012* portability of MSBuild calls across different host systems
1013* PolarFire SoC Watchdog test
1014* serialization of FrameBufferTester
1015* translation cache flushing after reset
1016
1017Improvements in peripherals:
1018
1019* Cortex-M NVIC
1020* HPSHostController
1021* NRF52840 Watchdog
1022* BMC050 accelerometer
1023* MAX32650 RTC
1024* MAX32650 GCR
1025* STM32F7 I2C
1026* STM32G0 DMA
1027* Micron MT25Q
1028* i.MX RT GPIO
1029
1030
10311.13.1 - 2022.07.23
1032-------------------
1033
1034Added platforms:
1035
1036* MAX32652 with UART, GPIO, Timer, PWRSEQ, GCR and RTC
1037* Thunderboard Sense 2 (SLTB004A) based on EFR32MG12
1038
1039Added models:
1040
1041* STM32G0 DMA controller
1042* OpenTitan CSRNG
1043* OpenTitan OTP controller
1044* OpenTitan Life Cycle controller
1045* USBserialport_S3B model for Qomu
1046* SAMD5 UART
1047* SAMD20 UART
1048* AES and Message Authentication cores for AthenaX5200
1049* LiteX MMCM controller in the 32-bit CSR width configuration
1050* LiteX Framebuffer in the 32-bit CSR width configuration
1051
1052Added demos:
1053
1054* Qomu running Zephyr shell
1055* SLTB004A running Gecko SDK baremetal CLI sample
1056
1057Added features:
1058
1059* guest-application profiling support
1060* TAP integration on Windows
1061* interrupt end hooks for RV64
1062* option for gathering execution metrics when running tests
1063* tests for logging from a sub-object
1064* PolarFireSoC Watchdog tests
1065* the disassembly output format to the Execution Tracer module
1066* option for filtering messages by log level in the log tester
1067
1068Changed:
1069
1070* improved support for ARMv8-M registers
1071* added option to compare raw values of selected registers in the gdb_compare script
1072* implemented generation of guest-host PC mappings info on block translation
1073* added `Frequency` property to ComparingTimer
1074* monitor-tests: Use virtual time in the pause test
1075* added static flushing to the logger
1076* included missing tools (like gdb_compare, sel4_extensions) in all packages
1077* added precompilation of Python scripts before running (to detect errors early)
1078* added user-specified file paths handling
1079* added filtering of ANSI escape codes from Robot tests keyword results
1080* added option to enable profiler globally in EmulationManager
1081* added command to disable automatic symbol switching in seL4 GDB extensions
1082* improved RISC-V kernel breakpoints support in seL4 GDB extensions
1083* code generator is now compiled with more aggressive optimizations
1084* changed the CPU class structure, allowing for core implementations not based on translation libraries
1085* updated the Nexys Video platform description and demo binaries
1086
1087Fixed:
1088
1089* 'Should Output Voice Data' test for QuickFeather
1090* various RISC-V vector instructions
1091* register values accessing in RISC-V
1092* help button behavior in AdvancedLoggerViewer
1093* concurrent access to Pixel Manipulation Tools
1094* clock residuum handling, e.g. improving the behavior of the BLE demo
1095* serialization of externals and GDB stub
1096* stacktrace reporting when exception is rethrown on the native-managed boundary
1097* packaging of license files from dependency projects
1098* exception handling on EnsureTypeIsLoaded
1099* various fixes in file handling layer
1100* improved handling of variables assigned to variables in the Monitor
1101* handling of multiple CPUs with different configurations in GDB
1102* STM32F413 RCC address
1103* DDR mapping in PolarFire SoC
1104* TCM memory size in miv_rv32
1105
1106Improvements in peripherals:
1107
1108* NVIC
1109* STM32F4_RCC
1110* STM32_ADC
1111* STM32_GPIOPort
1112* MiV_CoreGPIO
1113* GigaDevice_GD25LQ
1114* MC3635
1115* SynopsysEthernetMAC
1116* LiteSDCard_CSR32
1117* ResetPin
1118* HPSHostController
1119
11201.13.0 - 2022.04.29
1121-------------------
1122
1123Added platforms:
1124
1125* Xtensa sample controller stub
1126* MIMXRT1064-EVK
1127* STM32L552
1128* ARVSOM
1129* BeagleV StarLight
1130* Sparc GR716
1131* RISC-V virt
1132* S32K118 with LPIT, LPTMR, GPIO, Clock generator mock
1133* STM32G0
1134* STM32F412
1135* STM32H743
1136* MIV_RV32
1137
1138Added models:
1139
1140* new models for i.MX RT 1064: PWM, timer, ADC, LPSPI, Flex SPI, TRNG
1141* new models for nRF52840: RNG, Radio, Watchdog, ECB, PPI infrastructure
1142* new models for STM32: ADC, slave CAN, PWR, watchdog
1143* new models for OpenTitan: flash controller, timer, PLIC, HMAC, AES, KMAC, ROM controller, Key manager, Reset manager
1144* new models for Polarfire SoC: system services, user crypto features (RNG and RSA), Mustein GPU and various fixes to platform description
1145* new model for Zynq 7000: XADC
1146* new generic models:
1147
1148  * generic SPISensor
1149  * HostCamera device
1150  * TrivialUart
1151  * HPSHostController - fake I2C host master device for communicating with simulated devices
1152  * GigaDevice_GD25LQ - initial model
1153  * VirtIO block device model
1154
1155Added demos:
1156
1157* Murax SoC with verilated UART with simple echo demo
1158* LiteX with verilated CFU running CFU Playground demo
1159* Zynq with verilated FastVDMA running Linux
1160* NRF52840 BLE demo running Zephyr ``central_hr`` and ``peripheral_hr`` samples
1161* Leon3 running Zephyr shell
1162* GR716 running Zephyr shell
1163* Xtensa sample controller running Zephyr "Hello World" sample
1164
1165Added core features:
1166
1167* RISC-V: vector extension 1.0 support
1168* Xtensa architecture support
1169* RISC-V: access to proper set of registers + custom registers from GDB
1170* RISC-V: support for Custom Function Unit extensions
1171* WFE support on ARM cores
1172* uninterruptible debugging option to all architectures
1173* floating point support to Cortex-M platforms
1174* basic support for ARM 64-bit registers
1175* Cortex-M33 stub
1176* Sparc: added CSR register and exposed FSR register
1177
1178Added features:
1179
1180* primary selection copy support in TermSharp
1181* support for asciinema UART dumps
1182* support for native library communication in verilated peripherals
1183* APB3 bus implementation for VerilatorIntegrationLibrary
1184* support for loading HEX files
1185* video capture mechanism with host camera integration
1186* startup parameter for specifying the config file
1187* register access keywords for Robot Framework integration
1188* keyboard input in VideoAnalyzer on Windows
1189* option to stop on first error when running tests
1190* option to save failed test logs
1191* opcodes counting mechanism, along with RISC-V opcodes files parser
1192* execution tracing mechanism
1193* Wireshark support on Windows
1194* seL4-aware GDB debug support
1195* BLE wireless medium including Wireshark support
1196* gdb_compare script allowing to compare execution of two GDB instances, for example one connected to Renode and one to hardware
1197* support for vector registers in GDB
1198* CPU Id parameter in ARM cores
1199* option to control timestamp format and visibility in LoggingUartAnalyzer
1200* option to skip library fetch during build
1201* option to flush terminal history when connecting via socket
1202* support for external, bus-connected MMU
1203
1204Changed:
1205
1206* bumped Robot Framework version to ``4.0.1``
1207* RobotFramework: log entries keywords now accept regex patterns
1208* STM: renamed some UART ports to USART
1209* ZynqEthernet: removed and replaced with CadenceGEM
1210* Zedboard: updated demo to Linux 5.10
1211* reworked CPU halting
1212* added CRC to packets sent by NetworkServer
1213* RISC-V: added logs on unhandled CSR accesses
1214* improved build time by changes to TermSharp project organization
1215* various updates to STM32F746 CPU definition
1216* added limit to displayed command history in AntShell
1217* moved output of Robot tests to current directory when running on Windows
1218* XWT events are now queued in GTK engine
1219* added option to reconnect to SocketServerProvider
1220* explicitly used XZ compression with pacman
1221* added option to limit function names logging to unique entries, vastly improving performance
1222* removed dependency to realpath from build and run scripts
1223* removed dependency to ZeroMQ
1224* renamed EOSS3_SPIMaster to DesignWare_SPI
1225* dropped Fedora version indicator from packages
1226* optimized RISC-V PMP handling
1227* reworked PlatformLevelInterruptController to operate on contexts instead of targets
1228* added O/H/W write commands to ArduinoLoader
1229* enabled TLS 1.1 and TLS 1.2 in CachingFileFetcher
1230* improved multicore debugging support in GDB
1231* allowed to reuse testers in Robot tests
1232* added option to safely include the same C# file multiple times during one Renode run
1233* added ``tests.yaml``, containing all Robot tests, to all packages
1234* add debug mode for all architectures disabling interrupts when stepping over guest code
1235* simplified fixture selection when running tests
1236* allowed unaligned memory access by default in IbexRiscV32
1237* added GDB support for VS bits in MSTATUS register
1238* added interrupts support in verilated peripherals
1239* added support for CPU registers wider than 64-bits in Renode (C# part, not tlibs)
1240* improved and unified the --plain mode handling
1241* refactored the disassembly handling subsystem
1242* improved GDB packets handling performance
1243* added option to control serialization mode in the configuration file
1244* added optional compiled files cache
1245* improved handling of exceptions at the C/C# boundary
1246* flattened the TimeFramework structure to increase performance
1247* improved performance of handling of truncated translation blocks
1248* improved performance of TermSharp height map calculations and row handling
1249* added several tlib performance optimizations
1250* added the synchronized timers emulation mode
1251* added support for the flow control in UART
1252* added support for bright colors to TermSharp
1253* added basic VSCode launch configurations for Renode on Mono
1254* unified ``renode`` and ``renode-test`` scripts names across all packages
1255* added support for per-core peripheral registration
1256* added option to the build script to export the build directory
1257* improved performance of ELF reloading
1258* updated Conda build scripts to better work with the latest Renode, improved Windows support
1259* added option to configure step for clock entries
1260* improved startup performance by skipping analysis of uninteresting assemblies in TypeManager
1261* tied the AutoRepaintingVideo refresh frequency to the virtual time flow
1262* enabled passing the -e parameter to Renode even when providing a script file parameter
1263* added option to preserve temporary files from Robot tests
1264* added a source of a log message to the log tester
1265* Provides and Requires keywords now use state snapshots
1266
1267Fixed:
1268
1269* CPU endianness handling in GDB register accesses
1270* SPARC WRASR and CASA instructions
1271* SPARC registers handling in GDB
1272* memory invalidation on writes in MappedMemory
1273* ARM instructions: ASX, SAX, SUB16 and UQSUB
1274* symbol name mangling on MacOS
1275* updating PC before raising MMU exception on RISC-V
1276* unaligned ld_phys handling, resolves problems of possible memory corruption
1277* possible race conditions in TerminalTester
1278* IO access path selection in tlib
1279* support for big-endian peripherals
1280* running tests in sequential mode
1281* HiFive Unleashed platform description including PHY advertisement and RAM size
1282* Ethernet PHY advertisement on the Zedboard platform
1283* cross-endian bus accesses
1284* endian conversion wrappers for untranslated accesses
1285* registers mapping of fflags/frm/fcsr, resolving GDB registers XML generation
1286* running tests when the build phase failed
1287* it-status unit test
1288* added LibLLVM to all packages
1289* whitespace handling in resc scripts on Windows
1290* occasional assertion fail when loading ELF files
1291* setting breakpoints on virtual addresses
1292* MicroPython tests
1293* installation on Linux with a separate /opt mount point
1294* demangling symbols from the anonymous namespace
1295* SoftFloat's type conversion functions
1296* illegal instruction exception on wrong CSR access on RISC-V
1297* support for quad words access on the system bus
1298* possible memory leak in tlib
1299* improved precision of calculations in BasicClockSource and ComparingTimer Fixed
1300* support for various versions of standard libraries on Linux hosts (libdl, libutil, etc)
1301* libc dependencies for the Renode portable package
1302* invalidation of translation blocks on writes
1303* handling big offsets in MappedMemory
1304* ARM-M PRIMASK and xPSR handling
1305* PowerPC registers listing in GDB
1306* improved tlib debugging by not omitting the frame pointer on debug build
1307* fixed sfence.vma instruction implementation for RISC-V
1308* potential math errors (underflows/overflows) when handling the virtual time
1309* handling input redirected from file in the console mode
1310* prevented GdbStub from sending telnet config bytes on new connections
1311* serialization of paused state
1312* ad-hoc compiler support in the portable package
1313* flushing of log tester
1314* UartPtyTerminal serialization
1315* reporting the exit code in renode-test
1316* RISC-V custom CSRs handling
1317* resetting of a machine from the context of another machine
1318* thread-safety of interrupt handling mechanism
1319* occasional dependency fail on static constructors
1320
1321Improvements in peripherals:
1322
1323* CoreLevelInterruptor
1324* PlatformLevelInterruptController
1325* NVIC
1326* CortexAPrivateTimer
1327* BMA180
1328* CC1200
1329* Micron_MT25Q
1330* SynopsysEthernetMAC
1331* K6xF_Ethernet
1332* CadenceGEM
1333* OV2640
1334* GaislerMIC
1335* PL011
1336* EFR32_USART
1337* LowPower_UART
1338* OpenTitan_UART
1339* OpenTitan_GPIO
1340* IMXRT_ADC
1341* IMXRT_LPSPI
1342* LPUART
1343* STM32F7_I2C
1344* STM32_UART
1345* STM32 RTC
1346* STM32_TIMER
1347* STM32DMA
1348* STMCAN
1349* EXTI
1350* NRF52840_CLOCK
1351* NRF52840_Timer
1352* NRF52840 GPIO
1353* LiteX_I2S
1354* Litex_GPIO
1355* MPFS_PDMA
1356* MPFS_DDRMock
1357* Gaisler_GPTimer
1358
13591.12.0 - 2021.04.02
1360-------------------
1361
1362Added:
1363
1364* STM32F072 platform, with the STM32F072b Discovery board
1365* i.MX RT1064 platform
1366* NRF52840 platform, with Arduino Nano 33 BLE Sense board
1367* OpenTitan EarlGrey RISC-V platform with a range of OpenTitan peripherals
1368* CV32E40P-based RISC-V platform with many PULP peripherals
1369* LiteX with RISC-V Ibex CPU platform support
1370* CrossLink-NX evaluation board
1371* ice40up5k-mdp-evn board
1372* Zephyr-based test suite for QuickLogic QuickFeather with EOS S3
1373* Tock demo on LiteX/VexRiscv and STM32F4
1374* Mbed demo on STM32F7
1375* integration with Arduino IDE and Arduino CLI
1376* Python Standard Library, to be used with Python hooks and scripts in Renode
1377* support for images in the Monitor, along with possibility to take framebuffer screenshots. This also works with certain terminal emulators, like iTerm2, when in headless mode
1378
1379  * option to connect UART to the running console, improving headless capabilities
1380
1381    * option to run Renode Monitor directly in console, overlapped with logs, using the ``--console`` command line switch
1382
1383* support for virtual addressing in GDB
1384* option to combine multiple interrupt or GPIO signals into one, using logical OR, directly in REPL files
1385* multi-bus support and AXI4 support (both as an initiator and a receiver) in co-simulation with Verilator
1386* ability to send synthetic network frames in Robot tests
1387* various sensor models: MC3635, LSM330, LSM303DLHC, LSM9DS1, LIS2DS12, BMP180
1388* seven-segment display model
1389* support for camera interfaces for nRF52840 and other platforms, along with a basic HM01B camera model
1390* support for sound data via PDM and I2S interfaces in nRF52840 and EOS S3
1391* 32-bit CSR versions of various LiteX peripherals
1392* ``window-height`` and ``window-width`` Renode config file options
1393
1394Changed:
1395
1396* ad hoc C# compilation now uses the same, bundled compiler on all OSes, also allowing for compilation in the portable Linux package
1397* bumped the officially supported Ubuntu version to 20.04
1398* added execution metrics analyzer to all Renode packages
1399* verilated peripherals can now also be used on Windows and on macOS
1400* verilated UART peripherals have updated protocol message numbers, requiring them to be recompiled to work with the latest Renode version
1401* moved to use openlibm instead of libm on Linux, improving portability
1402* GDB can now access memory across pages in a single access
1403* switched the unit testing framework from NUnit2 to NUnit3
1404* reduced the number of transitions between the C and C# code, improving performance
1405* improved performance of peripheral writes
1406* tests print the run summary at the end of the output, making it easier to spot errors
1407* revamped handling of the vectored interrupt mode for RISC-V cores
1408* RISC-V CPUs can now optionally allow for unaligned memory accesses
1409* updated the default privileged architecture version for VexRiscv CPU
1410* VexRiscv can now use standard RISC-V interrupt model
1411* changed the flow of NVIC interrupt handling, significantly improving performance
1412* STM32F7 DMA2D and LTDC now support more pixel blending modes
1413* reimplemented and modernized several STM32 peripherals
1414* improved the model of K6xF Ethernet controller
1415* LiteSDCard model now supports DMA interface
1416* EXTI controller now has a configurable number of output lines
1417* improved handling of dummy bytes in MPFS QSPI
1418
1419Fixed:
1420
1421* tests running from installed Renode packages creating output files in forbidden locations
1422* serialization of NetworkInterfaceTester and UARTBackend
1423* possible non-deterministic behavior of UART backend in tests
1424* occasional file sharing violation in PosixFileLocker
1425* Renode printing out colors when in plain mode
1426* non-determinism in the button model
1427* time drift caused by unreported virtual ticks and improper instruction counting
1428* crash in TermsharpProvider when running on Windows
1429* invalid default frequency for STM32L1
1430
14311.11.0 - 2020.10.22
1432-------------------
1433
1434Added:
1435
1436* support for generating execution metrics, covering information like executed instructions count, memory and peripheral accesses, and interrupt handling
1437* infrastructure for reporting supported CPU features to GDB
1438* tests for Icicle Kit with PolarFire SoC
1439* ``--debug-on-error`` option for ``renode-test`` allowing interactive debugging of failed Robot tests
1440* ``lastLog`` Monitor command displaying ``n`` last log messages
1441* ``currentTime`` monitor command with information about elapsed host and virtual time
1442* ``WriteLine`` UART helper method to feed strings from the Monitor or scripts
1443* support for non-base RISC-V instruction sets disassembly
1444* support for custom Robot test results listeners
1445* support for Python-based implementation of (stateful) custom CSRs and custom instructions in RISC-V
1446* option to control RISC-V CSR access validation level interactively
1447* dummy support for data cache flush instruction in VexRiscv
1448* 64-bit decrementer support in PowerPC
1449* nRF52840 RTC model
1450* STM32F4 RTC model
1451* STM32F4 RCC stub model
1452* unified timer model for STM32F4 and STM32L1 platforms
1453* support for ATAPI CD-ROM
1454* burst read support in OpenCores I2C
1455
1456Changed:
1457
1458* time flow settings in Icicle Kit script now ensure full determinism
1459* all testers (for UART, LED, network, sysbus accesses and log messages) now rely on virtual time instead of host time and accept floating point timeouts
1460* portable package now includes requirements.txt file
1461* skipped tests do not generate save files anymore
1462* ``Clear`` Monitor command does not remove current working directory from searched paths
1463* WFI handling in RISC-V is simplified, improving performance on sleepy systems
1464* translation block fetch logger messages are now logged with Info instead of Debug level
1465* Cortex-M CPUs now reports their registers to GDB
1466* several infrastructural changes in the PCI subsystem
1467* STM32L1 oscillators are now all reported as ready
1468
1469Fixed:
1470
1471* Renode logo appearing in UART analyzer windows when running without Monitor
1472* logs not being fully written out when terminating Renode
1473* keyboard event detection in framebuffer window when no pointer device is attached
1474* crash when the logger console reports width equal to 0
1475* crash of ad-hoc compilation on Renode portable. Note that this still requires a C# compiler to be available on the host system
1476* crash when connecting GDB with the first core not being connected
1477* occasional crash when providing incorrect CLI arguments
1478* invalid disassembly of 64-bit RISC-V instructions
1479* crash on machine reset when using custom CSRs in RISC-V
1480* handling of multi-byte reads in LiteX I2C model
1481* handling of images with unaligned size in USB pen drive
1482* invalid LED connections in STM32F4
1483
14841.10.1 - 2020.07.30
1485-------------------
1486
1487This is a hotfix release overriding 1.10.0.
1488
1489Fixed:
1490
1491* crash on Windows when accessing high memory addresses
1492* installation instructions in README
1493
14941.10.0 - 2020.07.28
1495-------------------
1496
1497Added:
1498
1499* support for the PolarFire SoC-based Icicle Kit platform, with a demo running Linux
1500* experimental support for OpenPOWER ISA
1501* support for NXP K64F with UART, Ethernet and RNG
1502* basic support for Nordic nRF52840
1503* Microwatt platform, with Potato UART, running MicroPython or Zephyr
1504* LiteX platform with a 4-core VexRiscv in SMP
1505* LiteX demo running Microwatt as a CPU
1506* LiteX demo with VexRiscv booting Linux from the SD card
1507* LiteX demo with VexRiscv showing how to handle input and output via I2S
1508* LiteX MMCM model, I2S model and SD card controller model
1509* several peripheral models for QuickLogic EOS S3: ADC, SPI DMA, Packet FIFO, FFE etc
1510* ADXL345 accelerometer model
1511* PAC1934 power monitor model
1512* PCM encoder/decoder infrastructure for providing audio data to I2S devices
1513* modular network server allowing to easily add server components to the emulation without a host-to-guest connection
1514* built-in TFTP server module
1515* file backend for UARTs, allowing to send output directly to a file (``uart CreateFileBackend``)
1516* ``alias`` Monitor command
1517* ``console_log`` Monitor command to simply print to the log window without level filtering
1518* ``--no-gui`` build option to build without graphical dependencies
1519* option to define an average cycles count per instruction, to be used by CPU counters
1520* code formatting rules for translation libraries, to be used with Uncrustify
1521
1522Changed:
1523
1524* Renode is now able to be compiled with ``mcs``. This means that you can use your distribution's Mono package instead of the one provided by mono-project.com, as long as it satisfies the minimum version requirement (currently Mono 5.2)
1525* the default log level is now set to ``INFO`` instead of ``DEBUG``
1526* all PolarFire SoC peripherals are now renamed from PSE_* to MPFS_*, to follow Microchip's naming pattern
1527* major rework of the SD card model, along with the added SPI interface
1528* RI5CY core can now be created with or without FPU support
1529* STM32 and SAM E70 platforms now have verified ``priorityMask`` in NVIC
1530* Cortex-M based platforms can now be reset by writing to NVIC
1531* easy way to update timer values between synchronization phases, significantly improving the performance of polling on timers
1532* tests are now able to run in parallel, using the ``-j`` switch in the testing script execution
1533* the pattern for download links in scripts for binaries hosted by Antmicro has been changed
1534* portable package now includes testing infrastructure and sample tests
1535* the LLVM-based disassembly library is now rebuilt, using less space and being able to support more architectures on all host OSes
1536* the C++ symbol demangling now relies on a `CxxDemangler <https://github.com/southpolenator/CxxDemangler>`_ library, instead of libstdc++
1537* failed Robot tests will now produce snapshots allowing users to debug more easily
1538* SVD-based log messages on reads and writes are now more verbose
1539* Terminal Tester API has changed slightly, allowing for easier prompt detection, timeout control etc.
1540
1541Fixed:
1542
1543* crash when running tests with empty ``tests.yaml`` file
1544* crash when Renode is unable to find the root directory
1545* crash when loading broken or incompatible state snapshot with ``Load``
1546* several issues in the PPC architecture
1547* ``mstatus`` CSR behaviour when accessing FP registers in RISC-V
1548* PMP napot decoding in RISC-V
1549* evaluation of the IT-state related status codes in ARM CPUs
1550* invalid setting of CPUID fields in x86 guests
1551* PolarFire SoC platform description and various models: CAN, SPI, SD controller, etc.
1552* ``ODR`` register behavior in STM32F1 GPIO port
1553* ``State changed`` event handling in LED model
1554* invalid disposal of the SD card model, possibly leading to filesystem sharing violations
1555* some cursor manipulation commands in TermSharp
1556* performance issues when hitting breakpoints with GDB
1557* on the fly compilation of "*.cs" files in the portable Renode package
1558* Mono Framework version detection
1559* upgrading Renode version on Windows when installed using the ``msi`` package
1560* error message when quitting Renode on Windows
1561* running tests from binary packages
1562* support for testing in Conda Renode package
1563* other various fixes in Conda package building
1564
15651.9.0 - 2020.03.10
1566------------------
1567
1568Breaking changes:
1569
1570* the Renode configuration directory was moved to another location.
1571
1572  The directory is moved from ``~/.renode`` on Unix-like systems and ``Documents`` on Windows to
1573  ``~/.config/renode`` and ``AppData\Roaming\renode`` respectively. To use your previous settings
1574  and Monitor history, please start Renode 1.9 and copy your old config folder over the new one.
1575
1576Added:
1577
1578* support for RISC-V Privileged Architecture 1.11
1579* EOS S3 platform, with QuickFeather and Qomu boards support
1580* EFR32MG13 platform support
1581* Zolertia Firefly dual radio (CC2538/CC1200) platform support
1582* Kendryte K210 platform support
1583* NeTV2 with LiteX and VexRiscv platform support
1584* EFR32 timer and gpcrc models
1585* CC2538 GPIO controller and SSI models
1586* CC1200 radio model
1587* MAX3421E USB controller model
1588* LiteX SoC controller model
1589* support for Wishbone bus in verilated peripherals, exemplified with the ``riscv_verilated_liteuart.resc`` sample
1590* one-shot mode in AutoRepaintingVideo allowing display models to control when they are refreshed
1591* ``GetItState`` for ARM Cortex-M cores allowing to verify the current status of the IT block
1592* scripts to create Conda packages for Linux, Windows and macOS
1593* requirements.txt with Python dependencies to simplify the compilation process
1594* configuration option to collapse repeated lines in the log - turn it to false if you observe strange behavior of the log output
1595
1596Changed:
1597
1598* VexRiscv now supports Supervisor level interrupts, following latest changes to this core
1599* PolarFire SoC script now has a sample binary, running FreeRTOS with LwIP stack
1600* the output of Robot test is now upgraded to clearly indicate time of execution
1601* NetworkInterfaceKeywords now support wireless communication
1602* exposed several RISC-V registers to the Monitor
1603* VerilatedUART now supports interrupts
1604* tests file format was changed to yaml, thus changing tests.txt to tests.yaml
1605* test.sh can now run NUnit tests in parallel
1606* ``./build.sh -p`` will no longer build the portable Linux package as it requires a very specific Mono version
1607* path to ``ar`` can now be specified in the properties file before building
1608* MinGW libraries are now compiled in statically, significantly reducing the Windows package size
1609
1610Fixed:
1611
1612* crash when trying to set the underlying model for verilated peripheral in REPL
1613* crash when copying data from the terminal to clipboard on Windows
1614* crash on loading missing FDT file
1615* crash when starting the GDB server before loading the platform
1616* handling of very long commands via GDB
1617* improper window positioning when running on Windows with a display scaling enabled
1618* exception reporting from running CPUs
1619* flushing of closing LoggingUartAnalyzer
1620* icon installation on Fedora
1621* rebuilding translation libraries when only a header is changed
1622* macOS run scripts bundled in packages
1623* priority level handling in NVIC
1624* COUNTFLAG handling in NVIC
1625* several improvements in Cadence GEM frame handling
1626* FastRead operations in Micron MT25Q flash
1627* PolarFire SoC Watchdog forbidden range handling
1628* offset calculation on byte accesses in NS16550 model
1629* interrupt handling in PolarFire SoC QSPI model
1630* connected pins state readout in PolarFire SoC GPIO model
1631* several fixes in HiFive SPI model
1632* page latch alignment in PolarFire SoC
1633
16341.8.2 - 2019.11.12
1635------------------
1636
1637Added:
1638
1639* a sample running HiFive Unleashed with Fomu running Foboot, connected via USB
1640* a sample running MicroPython on LiteX with VexRiscv
1641* vectored interrupts support in RISC-V
1642* ``pythonEngine`` variable is now availalbe in Python scripting
1643
1644Changed:
1645
1646* Renode now requires Mono 5.20 on Linux and macOS
1647* USB setup packets are now handled asynchronously, allowing more advanced processing on the USB device side
1648* additional flash sizes for Micron MT25Q
1649* LiteX_Ethernet has a constant size now
1650
1651Fixed:
1652
1653* problem with halting cores in GDB support layer when hitting a breakpoint - GDB works in a proper all-stop mode now
1654
16551.8.1 - 2019.10.09
1656------------------
1657
1658Added:
1659
1660* LiteX with VexRiscv configuration running Zephyr
1661* USB/IP Server for attaching Renode peripherals as a USB device to host
1662* optional NMI support in RISC-V
1663* flash controller for EFR32
1664* I2C controller for LiteX
1665* SPI controller for PicoRV
1666* framebuffer controller for LiteX
1667* USB keyboard model
1668
1669Changed:
1670
1671* ``-e`` parameter for commands executed at startup can be provided multiple times
1672* ``polarfire`` platform is now renamed to ``polarfire-soc``
1673* style of Robot Framework result files
1674* MT25Q flash backend has changed from file to memory, allowing software to execute directly from it
1675* improved LiteX on Fomu platform
1676* terminals based on sockets now accept reconnections from clients
1677
1678Fixed:
1679
1680* ``Bad IL`` exceptions when running on Mono 6.4
1681
16821.8.0 - 2019.09.02
1683------------------
1684
1685Added:
1686
1687* support for RI5CY core and the VEGA board
1688* UART and timer models for RI5CY
1689* support for Minerva, a 32-bit RISC-V soft CPU
1690* LiteX with Minerva platform
1691* LiteX with VexRiscv on Arty platform
1692* SPI, Control and Status, SPI Flash and GPIO port peripheral models for LiteX
1693* PSE_PDMA peripheral model for the PolarFire SoC platform
1694* basic slave mode support in PSE_I2C
1695* EtherBone bridge model to connect Renode with FPGA via EtherBone
1696* EtherBone bridge demo on Fomu
1697* RTCC and GPCRC peripheral models for EFR32
1698* support for deep sleep on Cortex-M cores
1699* option of bundling Renode as an ELF executable on Linux
1700
1701Changed:
1702
1703* GDB server is now started from the ``machine`` level instead of ``cpu`` and is able to handle multiple cores at once
1704* renamed ``SetLossRangeWirelessFunction`` to ``SetRangeLossWirelessFunction``
1705* LiteX Ethernet now supports the MDIO interface
1706* updated memory map for several EFR32 platforms
1707* changed the interrupt handling of EFR32_USART
1708* several changes in Ethernet PHY
1709* switch is now started immediately after creation
1710* the Monitor (and other mechanisms) now uses caching, increasing its performance
1711* Robot tests are now part of packages
1712* Robot tests no longer cause the Monitor telnet server to start automatically
1713* REPL files now accept multiline strings delimited with triple apostrophe
1714* UART analyzers are writing to the Renode log when running from Robot
1715* simplified command line switches for running Robot tests
1716* some Robot keywords (e.g. ``LogToFile``) are not saved between related tests
1717
1718Fixed:
1719
1720* compilation of verilated peripheral classes in Windows (backported to 1.7.1 package)
1721* determinism of SAM E70 tests
1722* crash when using ``logLevel`` command with ``--hide-log`` switch
1723* ad-hoc compiler behavior in Windows
1724* crash on too short Ethernet packets
1725* byte read behavior in NS16550
1726* auto update behavior of PSE_Timer
1727* connection mode when running the Monitor via telnet
1728* deserialization of ``SerializableStreamView``
1729* crash when completing interrupts in PLIC when no interrupt is pending
1730* Renode startup position on Windows with desktop scaling enabled
1731* fence.* operation decoding in RISC-V
1732* invalid size reported by SD card
1733* crash when trying to set the same log file twice
1734* compilation issues on GCC 9
1735
1736
17371.7.1 - 2019.05.15
1738------------------
1739
1740Added:
1741
1742* integration layer for Verilator
1743* base infrastructure for verilated peripherals
1744* base class for verilated UARTs, with analyzer support
1745* Linux on LiteX with VexRiscv demo
1746
1747Changed:
1748
1749* RISC-V CPUs now don't need CLINT in their constructor, but will accept any abstract time provider
1750* updated LiteX with PicoRV32 and LiteX with VexRiscv platform
1751
1752Fixed:
1753
1754* sharing violation when trying to run downloaded files
1755
17561.7.0 - 2019.05.02
1757------------------
1758
1759Added:
1760
1761* PicoRV32 CPU
1762* LiteX platform with PicoRV32
1763* LiteX timer and ethernet (LiteEth) model
1764* Murax SoC with UART, timer and GPIO controller models
1765* Fomu target support with LiteX and VexRiscv
1766* SAM E70 Xplained platform with USART, TRNG and ethernet controller models
1767* STM32F4 Random Number Generator model
1768* PSE watchdog model
1769* PTP support in Cadence GEM ethernet model, along with several fixes
1770* option to execute CPUs in serial instead of parallel
1771* support for custom instructions in RISC-V
1772* ``empty`` keyword in REPL
1773* graphical display analyzer support on Windows
1774* multi-target GPIO support, along with the new REPL syntax
1775* local interrupts in PolarFire SoC platform
1776* option to pass variables to Robot tests via test.sh
1777* some SiFive FU540 tests
1778* network interface tester for Robot tests
1779* tests for PTP implementation in Zephyr
1780
1781Changed:
1782
1783* Micron MT25Q is now able to use file as a backend and does not need to have a separate memory provided in REPL
1784* Micron MT25Q now has selectable endianess
1785* ``logFile`` command will now create a copy of the previous log before overwriting it
1786* ``sysbus LogPeripheralAccess`` will now add the active CPU name and current PC to log messages
1787* single-stepping of a CPU is now easier, it requires only a single call to ``cpu Step`` on a paused CPU
1788* NVIC reload value is now 24-bit
1789* reimplemented the STM32_UART model
1790* updated the PolarFire SoC memory map
1791* updated the SiFive FU540 memory map
1792* ``GetClockSourceInfo`` will now display the name of the timer
1793* Termsharp will no longer print the NULL character
1794* RISC-V cores will now abort when trying to run a disabled F/D instruction
1795
1796Fixed:
1797
1798* handling of divider in ComparingTimer
1799* reporting of download progress on some Mono versions
1800* running Robot tests on Windows
1801* generation of TAP helper on newest Mono releases
1802* Renode crashing after opening a socket on the same port twice
1803* serialization of data storage structures
1804* architecture name reported on GDB connection for Cortex-M CPUs
1805* highlighting of wrapped lines in the terminal on Windows
1806* TAB completion in the Monitor on Windows
1807* RNG determinism and serialization for multicore/multi-node systems
1808* SiFive FE310 interrupt connection
1809* instruction counting in RISC-V on MMU faults
1810* time progress in multicore systems
1811* fixes in MiV GPIO controller model
1812* several fixes and improvements in file backend storage layer
1813* several fixes in testing scripts
1814* several fixes in various LiteX peripherals
1815* several fixes in PSE QSPI and Micron MT25Q model
1816
18171.6.2 - 2019.01.10
1818------------------
1819
1820Added:
1821
1822* instructions on running in Docker
1823* --pid-file option to save Renode's process ID to a file
1824
1825Changed:
1826
1827* RISC-V X0 register is now protected from being written from the Monitor
1828* Renode will now close when it receives a signal from the environment (e.g. Ctrl+C from the console window)
1829* invalid instructions in RISC-V will no longer lead to CPU abort - an exception will be issued instead, to be handled by the guest software
1830* Robot tests will now log more
1831
1832Fixed:
1833
1834* formatting of symbol logging
1835* error reporting in Robot tests using the ``Requires`` keyword
1836* Microsemi's Mi-V CPU description
1837
18381.6.1 - 2019.01.02
1839------------------
1840
1841Added:
1842
1843* CC2538 Flash Controller
1844* ECB mode for CC2538 Cryptoprocessor
1845
1846Changed:
1847
1848* unhandled read/write logs are now decorated with the CPU name instead of the number
1849* message acknowledge logic on PolarFire CAN controller
1850
1851Fixed:
1852
1853* race condition in PromptTerminal used by the Robot Framework
1854* Monitor socket not opening in certain situations
1855* unaligned accesses in RISC-V not setting the proper badaddr value
1856* handling of data exceeding the maximum packet size of USB endpoint
1857* memory map and CPU definition for SiFive FE310
1858* out of bounds access when using Ctrl+R with wrapped lines in the Monitor
1859
18601.6.0 - 2018.11.21
1861------------------
1862
1863Added:
1864
1865* new USB infrastructure
1866* new PCI infrastructure
1867* PolarFire SoC platform support
1868* atomic instructions on RISC-V
1869* basic PicoSoC support - the picorv32 CPU and UART
1870* block-finished event infrastructure - verified on RISC-V and ARM cores
1871* more PSE peripherals: RTC, PCIe controller, USB controller, QSPI, CAN, etc
1872* Micron MT25Q flash model
1873* ``watch`` command to run Monitor commands periodically
1874* a message on the Monitor when quitting Renode
1875* qXfer support for GDB, allowing the client to autodetect the architecture
1876* log tester for Robot Framework
1877
1878Changed:
1879
1880* added error handling for uninitialized IRQ objects in REPL loading
1881* RISC-V CSR registers are now accessible in relevant privilege architecture version only
1882* RISC-V CPUs no longer require CLINT provided as a constructor parameter
1883* added second timer interrupt to PSE_Timer
1884* machine.GetClockSourceInfo now prints the current value for each clock entry
1885* REPL loading tests are now in Robot
1886* value provider callbacks on write-only fields will generate exceptions
1887* watchpoint handling infrastructure
1888* reworked single stepping
1889* Monitor errors are forwarded to the GDB client when issuing qRcmd
1890* LoadELF command initializes PC on all cores by default
1891* reduced the default synchronization quantum
1892* CPU abort now halts the emulation
1893* --disable-xwt no longer requires opening a port
1894* RISC-V atomic instructions now fail if the A instruction set is not enabled
1895
1896Fixed:
1897
1898* pausing and halting the CPU from hooks
1899* error when trying to TAB-complete nonexisting paths
1900* packaging script on Windows
1901* crash on extremely narrow Terminal on Windows
1902* inconsistent cursor position when erasing in Termsharp
1903* selection of multibyte UTF characters on Linux
1904* scrollbar behavior on Windows
1905* error reporting from executed commands in Robot
1906* RISC-V cores reset
1907* several fixes in time framework
1908* output pin handling and interrupt clearing in PSE_GPIO
1909* minor fixes in PSE_SPI
1910* throwing invalid instruction exception on wrong CSR access in RISC-V
1911* CPU abort will now stop the failing CPU
1912
1913
19141.5.0 - 2018.10.03
1915------------------
1916
1917Added:
1918
1919* custom CSR registers in RISC-V
1920* VexRiscv CPU
1921* basic LiteX platform with VexRiscv
1922* LiteX VexRiscv demo with Zephyr
1923* single and multinode CC2538 demos with Contiki-NG
1924* PSE peripherals
1925* several tests for demos and internal mechanisms
1926* base classes for bus peripherals, allowing for easier definition of registers
1927
1928Changed:
1929
1930* installation instructions in README
1931* the target .NET version changed to 4.5 reducing the number of dependencies
1932* forced mono64 on macOS
1933* renamed the multinode demos directory
1934* RISC-V CPUs now generate an exception on unaligned memory reads and writes
1935* CLINT is now optional for RISC-V CPUs
1936* reimplemented FileStreamLimitWrapper
1937
1938Fixed:
1939
1940* first line blinking in terminal on Windows
1941* performance fixes in function logging
1942* handling of broken CSI codes in Termsharp
1943* completely removed the GTK dependency on Windows
1944* handling of CheckIfUartIsIdle Robot keyword
1945* resetting of RISC-V-based platforms
1946* prevented a rare crash on disposing multicore platforms when using hooks
1947* handling of unsupported characters in Robot protocol
1948* Windows installer correctly finds the previous Renode installation (may require manual deinstallation of the previous version)
1949* compilation of translation libraries on Windows is no longer forced on every Renode recompilation
1950
1951
19521.4.2 - 2018.07.27
1953------------------
1954
1955Added:
1956
1957* debug mode in RISC-V, masking interrupts and ignoring WFI when connected via GDB
1958* installer file for Windows
1959* GPIO controller for STM32F103, with other improvements to the platform file
1960* PWM, I2C and SPI peripherals for HiFive Unleashed
1961* tests for HiFive Unleashed
1962* configuration option to always add machine name in logs
1963* test scripts when installing Renode from a package on Linux
1964
1965Changed:
1966
1967* changed gksu dependency to pkexec, as Ubuntu does not provide gksu anymore
1968* virtual time of machines created after some time is synchronized with other machines
1969* improved Vector Table Offset guessing when loading ELF files on ARM Cortex-M CPUs
1970* extended capabilities of some Robot keywords
1971* changed the way peripheral names are resolved in logs, so that they don't disappear when removing the emulation
1972
1973Fixed:
1974
1975* support for writing 64-bit registers from GDB
1976* crash when trying to connect to a nonexisting interrupt
1977* GDB access to Cortex-M registers
1978* some fixes in EFR32_USART
1979
1980
19811.4.1 - 2018.06.28
1982------------------
1983
1984Added:
1985
1986* AXI UART Lite model
1987
1988Changed:
1989
1990* event dispatching on WPF on Windows
1991
1992Fixed:
1993
1994* an error in handling of generated code on Windows, causing the emulated application to misbehave
1995* font loading and default font size on Windows
1996
19971.4.0 - 2018.06.22
1998------------------
1999
2000Added:
2001
2002* support for RISC-V Privileged Architecture 1.10
2003* 64-bit RISC-V target emulation
2004* support for HiFive Unleashed platform
2005* support for SiFive Freedom E310 platform
2006* new way of handling time progression and synchronization in the whole framework
2007* support for 64-bit registers
2008* basic support for a range of SiLabs EFM32, EFR32 and EZR32 MCUs
2009* several new Robot keywords
2010* Wireshark support for macOS
2011
2012Changed:
2013
2014* Windows runs a 64-bit version of Renode
2015* 32-bit host OSes are no longer supported
2016* Robot tests can now be marked as OS-specific or ignored
2017* improvements in CC2538 radio model
2018* enum values in REPL files can now be provided as integers
2019* updated interrupt model in RISC-V
2020* MaximumBlockSize is no longer forced to 1 when starting GDB server
2021
2022Fixed:
2023
2024* several fixes in REPL grammar
2025* fixes in Robot test handling
2026* fixes in GDB watchpoints and breakpoints
2027* few other fixes in GDB integration layer
2028* floating point operations in RISC-V
2029* atomic operations in RISC-V
2030* high CPU usage when loading many nodes at the same time
2031* deserialization of the UART windows
2032* symbol names caching when loading new symbol files
2033* several minor fixes in different platform files
2034
20351.3.0 - 2018.01.26
2036------------------
2037
2038Added:
2039
2040* EmulationEnvironment - a mechanism to handle sensor data in a centralized way
2041* test for loading REPL files
2042* several registers and commands in CC2538RF
2043* SCSS device for QuarkC1000 platform
2044* sample scripts with two nodes running a Zephyr demo
2045
2046Changed:
2047
2048* ComparingTimer and LimitTimer are now more similar in terms of API
2049* macOS runs a 64-bit version of Renode
2050* changed Arduino 101 with CC2520 board to Quark C1000 devkit
2051* improvements in RISC-V interrupt handling
2052* current working directory is now always a part of Monitor's default path
2053
2054Fixed:
2055
2056* crash when closing Renode with Wireshark enabled but not yet started
2057* handling of timer events for a specific timer configuration
2058* implementation of LED tester
2059* starting Robot on Windows without administrative privileges
2060* terminal state after running Robot tests
2061* improper timer initialization in RISC-V's CoreLevelInterruptor
2062* text highlighting in wrapped lines in terminal windows
2063
20641.2.0 - 2017.11.15
2065------------------
2066
2067Added:
2068
2069* support for RISC-V architecture
2070* support for Microsemi Mi-V platform
2071* thin OpenOCD layer in GDB remote protocol support
2072
2073Changed:
2074
2075* timers can now hold values up to 64 bits
2076* ``Button`` peripheral can now have inverted logic
2077* GDB server can be configured to autostart after the first "monitor halt" received
2078
2079Fixed:
2080
2081* translation cache invalidation on manual writes to memory
2082* reset of ``LimitTimer`` peripheral, which is the base for most of the supported timers
2083
20841.1.0 - 2017.11.14
2085------------------
2086
2087Added:
2088
2089* sample scripts for different platforms
2090* support for running Renode on Windows
2091* EFR32MG cpu support. For the list of peripherals, see efr32mg.repl
2092* more robust support for SVD files
2093* support for '\n -> \r\n' patching in Termsharp console windows
2094* support for font configuration in Termsharp
2095* support for CRC in Ethernet
2096* packaging scripts
2097
2098Changed:
2099
2100* API for UART-related keywords in Robot Framework integration layer
2101* the project infrastructure now supports C# 7.0
2102* directory organization
2103
2104Fixed:
2105
2106* several minor fixes in platform description format (.repl)
2107* bug where Renode hanged after issuing the "help" command in the Monitor
2108
21091.0.0 - 2017.06.13
2110------------------
2111
2112This is the initial release of Renode.
2113Renode is a virtual development and testing tool for multinode embedded networks.
2114For more information please visit `<https://www.renode.io>`_.
2115
2116