FSD319: Software Safety Requirements Specification

Motivations

Motivation: EN-61508-3 clause 7.2.2.1 MOTIVATION_319_001
status: PASS
tags: fsd319

Not applicable: requirements have not already been specified.

Motivation: EN-61508-3 clause 7.2.2.2 MOTIVATION_319_002
status: PASS
tags: fsd319

Software safety requirements specification is specified in FSD319: Software Safety Requirements Specification. They are derived from FSD114: 61508-1 E/E/PE system safety requirements specification and FSD120: System design requirements specification. There is no software developed without taking into account the safety requirements in FSD114: 61508-1 E/E/PE system safety requirements specification.

Motivation: EN-61508-3 clause 7.2.2.3 MOTIVATION_319_003
status: PASS
tags: fsd319

In addition to EN-61508-3 clause 7.2.2.10 (MOTIVATION_319_010), FSD303: Techniques and measures specifies techniques and measures applied to achieve SIL3.

Motivation: EN-61508-3 clause 7.2.2.4 MOTIVATION_319_004
status: PASS
tags: fsd319

The safety software runs on dedicated CPUs, with dedicated memory and watchdog. Flow control and RAM/Flash memory tests are used and data to and between safety CPUs are sent through black channel. The safety CPUs are not the same type nor has the same software.

Accidental “DOS” behaviour on the interface between the CPUs and the safety CPU shall also be considered. Software executing in the safety CPUs shall be split in modules that have clearly defined interfaces. The functionality in one module shall have high cohesion. Global data that is not passed as a parameter to a method/function shall be avoided.

Motivation: EN-61508-3 clause 7.2.2.5 MOTIVATION_319_005
status: PASS
tags: fsd319

The software developers have thoroughly discussed safety functions with the hardware designers. Different hardware modules (such as watchdogs) shall be used to fulfil the safety requirements. Capacity and timing on the safety CPUs shall be considered during software development, in particular, no blocking functions or tight loops will be allowed in the software design.

Motivation: EN-61508-3 clause 7.2.2.6 MOTIVATION_319_006
status: PASS
tags: fsd319

See FSD114: 61508-1 E/E/PE system safety requirements specification.

Motivation: EN-61508-3 clause 7.2.2.7 MOTIVATION_319_007
status: PASS
tags: fsd319

The hardware and software together need to have enough performance to meet the requirement of the response time to all faults that require deactivation of the radio module (described in 7.2.2.10 below). CPU integrated hardware timers are used in interrupts to make sure that the unit goes into safe state if CPU time is not enough.

Motivation: EN-61508-3 clause 7.2.2.8 MOTIVATION_319_008
status: PASS
tags: fsd319

a) A number of fault detection mechanisms shall be used, some in software and some assisted by hardware:

  • checksum of safety software code is verified at each start-up

  • flow control check of execution in combination with a watchdog (described in EN 61508-7:2010, A.9.4)

  • RAM memory test

  • exception on access of illegal memory

  • shutdown during under-voltage

b) See Software safety requirements in this document.

c) See Software safety requirements in this document.

d) Safe functions are continously tested.

e) See Software safety requirements in this document.

Motivation: EN-61508-3 clause 7.2.2.9 MOTIVATION_319_009
status: PASS
tags: fsd319

The safety related software executes on CPUs where no non-safety related software executes.

Motivation: EN-61508-3 clause 7.2.2.10 MOTIVATION_319_010
status: PASS
tags: fsd319

a) - b) See Software safety requirements in this document.

Motivation: EN-61508-3 clause 7.2.2.11 MOTIVATION_319_011
status: PASS
tags: fsd319

a) Range and invalid value checks in software and all safety settings are protected by CRC. b) Range and invalid value checks in software. c) Range and invalid value checks in software.

Motivation: EN-61508-3 clause 7.2.2.12 MOTIVATION_319_012
status: PASS
tags: fsd319

a) Consistency in the radio and CAN protocol. Software version and configuration is included in CRC/hash calculations, to ensure mismatch between units that communicate with each other results in no communication.

b) Covered in software integration tests. c) Covered in FSD150: Validation tests of modes, power supply, and configuration and FSD322: Software Verification Plan. d) Covered in E/E/PE system safety validation tests. e) Covered in FSD124: GUI and Compiler function requirements, module tests and integration tests.

Motivation: EN-61508-3 clause 7.2.2.13 MOTIVATION_319_013
status: PASS
tags: fsd319

a) Range and invalid value checks in software and all safety settings are protected by CRC. b) Only authorized personal have access to change safety settings (password). c) All safety settings are protected by CRC.

Requirements

ID

Title

Source

Status

Derived

SWSREQ_001A

RAM test

DREQ_16A

PASS

TEST_300_016; TEST_300_017; TEST_300_114; TEST_300_115

SWSREQ_001B

RAM test

DREQ_16A

PASS

TEST_300_016; TEST_300_017; TEST_300_114; TEST_300_115

SWSREQ_001C

RAM test

DREQ_16A

PASS

TEST_300_016; TEST_300_017; TEST_300_114; TEST_300_115

SWSREQ_001D

RAM test

DREQ_16A

PASS

MOTIVATION_300_311

SWSREQ_002A

Flash test

DREQ_16B

PASS

TEST_300_042; TEST_300_052; TEST_300_128

SWSREQ_002B

Flash test

DREQ_16B

PASS

TEST_300_042; TEST_300_052; TEST_300_128

SWSREQ_003A

Loss of power safe state

DREQ_24A

PASS

TEST_150_003

SWSREQ_004A

Minimum voltage

DREQ_24B

PASS

MOTIVATION_124_003; TEST_150_004

SWSREQ_004B

Minimum voltage

DREQ_24B

PASS

TEST_150_004

SWSREQ_005A

Maximum voltage

DREQ_24D

PASS

MOTIVATION_124_003; TEST_150_005

SWSREQ_005B

Maximum voltage

DREQ_24D

PASS

TEST_150_005

SWSREQ_007A

Logic calculation interval

DREQ_108A

PASS

TEST_300_021; TEST_300_022; TEST_300_023; TEST_300_119; TEST_300_120; TEST_300_121

SWSREQ_007B

Logic calculation interval

DREQ_108A; DREQ_108B

PASS

TEST_300_021; TEST_300_022; TEST_300_119; TEST_300_120

SWSREQ_007C

Logic calculation interval

DREQ_108B

PASS

TEST_300_023; TEST_300_121

SWSREQ_008A

Block diagram

DREQ_122A; DREQ_LOGIC_201A; DREQ_118A

PASS

MOTIVATION_124_001

SWSREQ_009A

Selectable maximum reaction time

PASS

MOTIVATION_124_002

SWSREQ_010A

CPU-CPU communication

DREQ_C2C_5

PASS

TEST_300_002; TEST_300_003; TEST_300_004; TEST_300_006; TEST_300_007; TEST_300_008; TEST_300_009; TEST_300_047; TEST_300_048; TEST_300_053; TEST_300_054; TEST_300_056

SWSREQ_010B

CPU-CPU communication

DREQ_C2C_3

PASS

TEST_300_003; TEST_300_103

SWSREQ_010C

CPU-CPU communication

DREQ_C2C_2

PASS

TEST_300_002; TEST_300_003; TEST_300_004; TEST_300_006; TEST_300_007; TEST_300_008; TEST_300_009; TEST_300_047; TEST_300_048; TEST_300_053; TEST_300_054; TEST_300_056

SWSREQ_010D

CPU-CPU communication

DREQ_C2C_3

PASS

TEST_300_002; TEST_300_003; TEST_300_004; TEST_300_006; TEST_300_007; TEST_300_008; TEST_300_009; TEST_300_047; TEST_300_048; TEST_300_053; TEST_300_054; TEST_300_056

SWSREQ_010E

CPU-CPU communication

DREQ_C2C_4

PASS

TEST_300_006

SWSREQ_010G

CPU-CPU communication

DREQ_C2C_1

PASS

TEST_300_006

SWSREQ_011A

IO ON/OFF states

DREQ_11A; DREQ_2A

PASS

TEST_SINGLE_INPUT_1; TEST_SINGLE_OUTPUT_1; TEST_GUI_ADVANCED_INPUT_1; TEST_GUI_ADVANCED_OUTPUT_1

SWSREQ_011B

IO ON/OFF states

DREQ_11A; DREQ_115D; DREQ_126A; DREQ_13A; DREQ_2A

PASS

TEST_SINGLE_INPUT_1; TEST_SINGLE_OUTPUT_1; TEST_GUI_ADVANCED_INPUT_1; TEST_GUI_ADVANCED_OUTPUT_1

SWSREQ_011C

IO ON/OFF states

DREQ_114D; DREQ_11A; DREQ_126B; DREQ_126A; DREQ_13A; DREQ_2A

PASS

TEST_SINGLE_INPUT_1; TEST_SINGLE_OUTPUT_1; TEST_GUI_ADVANCED_INPUT_1; TEST_GUI_ADVANCED_OUTPUT_1

SWSREQ_011D

IO ON/OFF states

DREQ_114B; DREQ_114D; DREQ_11A; DREQ_2A

PASS

TEST_SINGLE_INPUT_1; TEST_GUI_ADVANCED_INPUT_1

SWSREQ_011E

Combined inputs OFF/ON signal combinations

DREQ_116B; DREQ_2A

PASS

TEST_SINGLE_INPUT_1; TEST_GUI_ADVANCED_INPUT_1

SWSREQ_012A

Redundant inputs

PASS

TEST_GUI_ADVANCED_INPUT_1

SWSREQ_013A

Redundant outputs

PASS

TEST_GUI_ADVANCED_OUTPUT_1

SWSREQ_014A

Input voltage range

DREQ_114A; DREQ_14A

PASS

TEST_GUI_ADVANCED_INPUT_1

SWSREQ_015A

Transistor IO

DREQ_114E

PASS

TEST_SINGLE_INPUT_2; TEST_SINGLE_OUTPUT_2

SWSREQ_015B

Transistor inputs monitored by both CPUs

DREQ_114C

PASS

TEST_300_216

SWSREQ_016A

Analog mismatch check

DREQ_16C; DREQ_14A; DREQ_115C

PASS

TEST_300_216

SWSREQ_017A

Input startup test

DREQ_116C

PASS

TEST_GUI_SYNC_INPUTS_1

SWSREQ_018A

Internal output failure

DREQ_115A; DREQ_115C; DREQ_3A

PASS

TEST_300_202; TEST_300_205; TEST_300_206; TEST_300_207; TEST_300_208; TEST_300_209

SWSREQ_019A

External output failure

DREQ_115A; DREQ_115C; DREQ_4A

PASS

RESULT_SINGLE_OUTPUT_1; TEST_CFB_OSSD_1; TEST_CFB_OSSD_2; TEST_CFB_OSSD_3

SWSREQ_019B

Both CPUs control outputs

DREQ_115B

PASS

MOTIVATION_220_007

SWSREQ_020A

No user interface to control safety outputs

DREQ_15A

PASS

TEST_150_002

SWSREQ_021A

Combined IO function

DREQ_116A

PASS

TEST_CFB_COMBO_1

SWSREQ_022A

OSSD

DREQ_115D; DREQ_115E

PASS

TEST_CFB_OSSD_1; TEST_CFB_OSSD_2; TEST_CFB_OSSD_3

SWSREQ_023A

Relay outputs

DREQ_12A

PASS

TEST_300_041; TEST_300_126; TEST_300_201

SWSREQ_024A

Safe state

DREQ_SAFESTAE_1

PASS

TEST_150_010

SWSREQ_024B

Safe state non returning function

DREQ_SAFESTAE_2

PASS

TEST_150_010

SWSREQ_026A

Fault reaction time

DREQ_9A

PASS

TEST_150_008

SWSREQ_027A

Operation modes

DREQ_MODES_1

PASS

TEST_150_010; TEST_150_001; TEST_150_002

SWSREQ_028A

Normal operation mode

DREQ_NORMALMODE_1

PASS

TEST_150_002

SWSREQ_029A

Safe state mode

DREQ_SAFESTAE_1

PASS

TEST_150_010

SWSREQ_030A

Configuration mode

DREQ_LOGIC_200A

PASS

TEST_150_001

SWSREQ_030B

Configuration mode

DREQ_LOGIC_200B

PASS

TEST_150_001

SWSREQ_030C

Configuration mode

DREQ_LOGIC_200C

PASS

TEST_150_001

SWSREQ_030D

Configuration mode

DREQ_LOGIC_200D

PASS

TEST_150_001

SWSREQ_030E

Configuration mode

DREQ_LOGIC_200E

PASS

TEST_150_014

SWSREQ_030F

Configuration mode

DREQ_LOGIC_200F

PASS

TEST_150_011

SWSREQ_030G

Configuration mode

DREQ_LOGIC_200G

PASS

TEST_150_002

SWSREQ_030H

Configuration mode interfaces

DREQ_LOGIC_200H

PASS

TEST_150_015

SWSREQ_031A

Configuration correct addressing

DREQ_LOGIC_210A

PASS

TEST_150_016

SWSREQ_031B

Configuration correct addressing

DREQ_LOGIC_210B; DREQ_LOGIC_210C

PASS

TEST_150_017

SWSREQ_031C

Configuration success or failure

DREQ_LOGIC_210D

PASS

TEST_150_018

SWSREQ_031D

No user interface for unit setup

DREQ_10A

PASS

TEST_150_019

SWSREQ_031E

Memory card replacement

DREQ_10B

N/A

TEST_150_020

SWSREQ_032A

Start-up firmware check

DREQ_111A

PASS

TEST_150_006

SWSREQ_032B

Start-up firmware version check

DREQ_111A; DREQ_C2C_6

PASS

TEST_150_006

SWSREQ_032C

Start-up configuration check

DREQ_111A; DREQ_LOGIC_202A; DREQ_LOGIC_202B; DREQ_C2C_7

PASS

TEST_150_009; TEST_150_012

SWSREQ_032D

Start-up check production data

DREQ_111A; DREQ_C2C_8

PASS

TEST_300_029

SWSREQ_032E

Start-up always safe

DREQ_111A

PASS

TEST_300_029; TEST_300_031

SWSREQ_033A

Valid ID numbers

DREQ_28B; DREQ_C2C_8

PASS

TEST_300_031

SWSREQ_033B

Valid ID numbers

DREQ_28B

PASS

TEST_300_031

SWSREQ_034A

Radio black channel

DREQ_RADIO_1

PASS

BLCH0001

SWSREQ_034B

Radio sequence counter

PASS

BLCH0001

SWSREQ_034C

Radio CRC

PASS

BLCH0001

SWSREQ_034D

Safe data hash

SREQ_N_16B; SREQ_20; SREQ_29B

PASS

BLCH0001

SWSREQ_034E

Stateless safety information

DREQ_RADIO_11

PASS

BLCH0001

SWSREQ_034F

Timeout

DREQ_RADIO_11

PASS

BLCH0001

SWSREQ_035A

Global memories (safety information)

DREQ_RADIO_2A; DREQ_RADIO_2B

PASS

BLCH0001

SWSREQ_035B

Global memories (safety information)

DREQ_RADIO_2A; DREQ_RADIO_2B

PASS

BLCH0001

SWSREQ_035C

Global memories (safety information)

DREQ_RADIO_3A

PASS

BLCH0001

SWSREQ_035D

Radio timeout

DREQ_RADIO_3B

PASS

BLCH0001

SWSREQ_037A

Network same configuration

SREQ_20

PASS

TEST_150_012

SWSREQ_037B

Network same firmware

SREQ_20

PASS

TEST_150_006

SWSREQ_038A

SimpleCAN

DREQ_CAN_1; DREQ_CAN_2

PASS

SIMPLECAN_ALL_REQS

SWSREQ_100A

All code is safety code

DREQ_30A

PASS

MOTIVATION_320_001

SWSREQ_101A

Internal voltages monitoring

DREQ_3A

PASS

TEST_300_214

SWSREQ_101B

Internal voltages monitoring

DREQ_3A

PASS

TEST_300_214

SWSREQ_101C

Internal voltages monitoring

DREQ_3A

PASS

TEST_300_213

Requirement: RAM test SWSREQ_001A
status: PASS
tags: fsd319, swsreq

RAM tests shall be performed in both CPUs continuously during operation.

Requirement: RAM test SWSREQ_001B
status: PASS
tags: fsd319, swsreq

The time to test the whole RAM shall be less than 60 seconds.

Requirement: RAM test SWSREQ_001C
status: PASS
tags: fsd319, swsreq

The complete RAM shall be tested at start up in both CPUs.

Requirement: RAM test SWSREQ_001D
status: PASS
tags: fsd319, swsreq
Source: DREQ_16A

The algorithm for testing the RAM shall be documented and motivated.

Requirement: Flash test SWSREQ_002A
status: PASS
tags: fsd319, swsreq

Flash tests shall be performed in both CPUs continuously during operation.

Requirement: Flash test SWSREQ_002B
status: PASS
tags: fsd319, swsreq

The complete flash memory shall be tested at start up in both CPUs.

Requirement: Loss of power safe state SWSREQ_003A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_003
Source: DREQ_24A

Loss of power shall result in safe state.

Requirement: Minimum voltage SWSREQ_004A
status: PASS
tags: fsd319, swsreq

The minimum power supply voltage shall be configurable between 7V and 30V.

Requirement: Minimum voltage SWSREQ_004B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_004
Source: DREQ_24B

If the power supply voltage is below the configured minimum voltage for longer than 500ms, the system shall go into safe state.

Requirement: Maximum voltage SWSREQ_005A
status: PASS
tags: fsd319, swsreq

The maximum power supply voltage shall be configurable between 8V and 33V.

Requirement: Maximum voltage SWSREQ_005B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_005
Source: DREQ_24D

If the power supply voltage is above the configured maximum voltage for longer than 500ms, the system shall go into safe state.

Requirement: Logic calculation interval SWSREQ_007A
status: PASS
tags: fsd319, swsreq

The logic shall be calculated once every millisecond.

Requirement: Logic calculation interval SWSREQ_007B
status: PASS
tags: fsd319, swsreq

The logic calculation interval shall not deviate more than 0.1%.

Requirement: Logic calculation interval SWSREQ_007C
status: PASS
tags: fsd319, swsreq

The logic shall complete execution within 812.5 us in both CPUs. If the logic takes longer than 812.5 us to execute, the unit shall enter safe state.

Requirement: Block diagram SWSREQ_008A
status: PASS
tags: fsd319, swsreq

The configuration shall be programmed by means of a block diagram language.

Requirement: Selectable maximum reaction time SWSREQ_009A
status: PASS
tags: fsd319, swsreq

The maximum reaction time from detecting a stop condition from an input until the stop condition is achieved (outputs set to zero/OFF) shall be selectable.

Requirement: CPU-CPU communication SWSREQ_010A

Both CPUs shall send a message to the other CPU every millisecond.

Requirement: CPU-CPU communication SWSREQ_010B
status: PASS
tags: fsd319, swsreq

The CPU-CPU packets shall be protected by a 32bit CRC.

Requirement: CPU-CPU communication SWSREQ_010C

The C2C communication channel shall be implemented as a white channel.

Requirement: CPU-CPU communication SWSREQ_010D

The CPU2CPU communication shall be resistant to packet errors.

Requirement: CPU-CPU communication SWSREQ_010E
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_006
Source: DREQ_C2C_4

If any CPU does not receive a packet from the other CPU for 20ms, the unit shall enter safe state.

Requirement: CPU-CPU communication SWSREQ_010G
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_006
Source: DREQ_C2C_1

The CPU-CPU communication shall be implemented as a duplex communication channel.

Requirement: IO ON/OFF states SWSREQ_011A

All inputs and outputs shall have a defined ON and OFF state.

Requirement: IO ON/OFF states SWSREQ_011B

Transistor outputs shall be configurable with static and pulsed signal types according to FSD209 and FSD210.

Requirement: IO ON/OFF states SWSREQ_011C

Transistor inputs shall be configurable to handle all required input types according to FSD209 and FSD210.

Requirement: IO ON/OFF states SWSREQ_011D
status: PASS
tags: fsd319, swsreq

Transistor inputs shall be able to distinguish between different pulsed signals specified in FSD209 and FSD210.

Requirement: Combined inputs OFF/ON signal combinations SWSREQ_011E
status: PASS
tags: fsd319, swsreq

A combination of ON and OFF conditions from inputs shall be able to be used for input logic conditions.

Requirement: Redundant inputs SWSREQ_012A
status: PASS
tags: fsd319, swsreq

Redundant inputs shall be configurable with:

  • 2-8 input pins with defined ON/OFF states,

  • Simultaneity

  • Debounce

Requirement: Redundant outputs SWSREQ_013A
status: PASS
tags: fsd319, swsreq

Redundant outputs shall be configurable with 2-8 output pins with defined ON/OFF states.

Requirement: Input voltage range SWSREQ_014A
status: PASS
tags: fsd319, swsreq

Transistor inputs shall be able to detect voltage levels between 0V and 33V.

Requirement: Transistor IO SWSREQ_015A
status: PASS
tags: fsd319, swsreq

All transistor IOs shall be configurable as an input or output.

Requirement: Transistor inputs monitored by both CPUs SWSREQ_015B
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_216
Source: DREQ_114C

Each input shall be monitored by both CPUs.

Requirement: Analog mismatch check SWSREQ_016A
status: PASS
tags: fsd319, swsreq

The measured analog values for all inputs and outputs by each CPU shall be compared against the measured analog values of the other CPU.

If either CPU detects a mismatch between the measured voltage on an input or an output and the received measured voltage from the other CPU, the unit shall enter safe state.

Requirement: Input startup test SWSREQ_017A
status: PASS
tags: fsd319, swsreq

A start-up test condition shall be configurable for all inputs. If start-up test is enabled the input must be in OFF state to be able to go to ON state.

Requirement: Internal output failure SWSREQ_018A
status: PASS
tags: fsd319, swsreq

If an internal output failure is detected, the unit shall enter safe state.

Requirement: External output failure SWSREQ_019A
status: PASS
tags: fsd319, swsreq

If an external output failure is detected, the relevant outputs shall go to safe state.

Requirement: Both CPUs control outputs SWSREQ_019B
status: PASS
tags: fsd319, swsreq
Source: DREQ_115B

CPU1 shall directly control every individual output. CPU2 shall control the main transistor for all outputs.

Requirement: No user interface to control safety outputs SWSREQ_020A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_002
Source: DREQ_15A

There shall be no user interface to control safety outputs from any user interface, which include:

  • Configuration messages via CAN,

  • Configuration messages via radio,

  • Configuration messages via USB,

  • Push buttons on PCB/display module.

Requirement: Combined IO function SWSREQ_021A
status: PASS
tags: fsd319, swsreq
Source: DREQ_116A

For the special I/O type “combined I/O”, the logic shall be able to use the I/O as both input and output within 4 ms. I.e., the input part shall be read at least every 4 ms.

Requirement: OSSD SWSREQ_022A
status: PASS
tags: fsd319, swsreq

Every OSSD output from a unit shall be able to detect short circuits between any other OSSD output from the same unit.

Requirement: Relay outputs SWSREQ_023A
status: PASS
tags: fsd319, swsreq

All relay outputs shall be continuously monitored by both CPUs.

Requirement: Safe state SWSREQ_024A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_010

Safe state shall be achieved by turning off all outputs (relays, transistor outputs, radio, CAN). No continuous control is needed.

Requirement: Safe state non returning function SWSREQ_024B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_010

The safe state shall be implemented as a non returning function. The only way to leave shall be to restart the CPU.

Requirement: Fault reaction time SWSREQ_026A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_008
Source: DREQ_9A

When a dangerous fault is detected, the maximum delay until all affected outputs in the complete system have reached the safe state shall be the response time (DREQ7.3 and DREQ108.1) + 500ms.

Requirement: Operation modes SWSREQ_027A
status: PASS
tags: fsd319, swsreq

The following modes of operation shall be implemented:

Requirement: Normal operation mode SWSREQ_028A
status: PASS
tags: fsd319, swsreq

In the normal mode of operation, the unit can communicate safety information via the different interfaces, and controls outputs based on inputs according to the user configuration.

Requirement: Safe state mode SWSREQ_029A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_010

In the safe state all outputs shall be monitored and contiuously set to safe state. No safety communication shall be possible.

Requirement: Configuration mode SWSREQ_030A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_001

The configuration mode shall be implemented as a non returning function. The only way to leave configuration mode is by a software reset or power cycle.

Requirement: Configuration mode SWSREQ_030B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_001

In the configuration mode all outputs shall be continuously monitored and turned off.

Requirement: Configuration mode SWSREQ_030C
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_001

The configuration mode shall only be possible to enter at startup by a software reset.

Requirement: Configuration mode SWSREQ_030D
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_001

Code which handles configuration shall only be reachable in configuration mode.

Requirement: Configuration mode SWSREQ_030E
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_014

The configuration mode shall be protected by a password. If the password is incorrect, the unit shall ignore the request to enter configuration mode.

Requirement: Configuration mode SWSREQ_030F
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_011

If the configuration tool is connected but does not activate the configuration state, the Safety Simplifier shall work as normal.

Requirement: Configuration mode SWSREQ_030G
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_002

All configuration attempts when not in configuration mode shall be rejected.

Requirement: Configuration mode interfaces SWSREQ_030H
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_015

The unit shall be able to enter configuration mode and be configured via the following interfaces:

  • USB,

  • CAN,

  • Radio.

Requirement: Configuration correct addressing SWSREQ_031A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_016

The PC tool shall verify that the destination unit is the correct unit specified by the user.

Requirement: Configuration correct addressing SWSREQ_031B
status: PASS
tags: fsd319, swsreq

The PC tool shall allow the user to visually identify units via radio and CAN.

Requirement: Configuration success or failure SWSREQ_031C
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_018

After downloading a configuration to one or more units, the PC software shall present the the success or failure to the user.

Requirement: No user interface for unit setup SWSREQ_031D
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_019
Source: DREQ_10A

There shall be no code that implements a user interface to setup or replace a unit from scratch, except that which is defined in Memory card replacement (DREQ_10B).

Requirement: Memory card replacement SWSREQ_031E
status: N/A
tags: fsd319, swsreq
Derived: TEST_150_020
Source: DREQ_10B

There shall be a means to replace a unit by transferring its memory card to a new unit and following a replacement procedure.

Requirement: Start-up firmware check SWSREQ_032A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_006
Source: DREQ_111A

The firmware data in flash shall be protected by a 32bit CRC which shall be checked at start-up. If the CRC does not match, the unit shall not start.

Requirement: Start-up firmware version check SWSREQ_032B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_006

Both CPUs shall check each others SW version at start-up. If either CPU detects that the other CPU has a different SW version, the unit shall enter safe state.

Requirement: Start-up configuration check SWSREQ_032C
status: PASS
tags: fsd319, swsreq

Both CPUs shall check at start up that the configuration is

  • Available (configuration header magic value matches expected),

  • Valid (CRC matches),

  • Compatible with firmware (compiler version same as what firmware expects),

  • Same hash in both CPUs.

Requirement: Start-up check production data SWSREQ_032D
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_029

Production data shall be protected by a 32bit CRC and checked at start-up.

Requirement: Start-up always safe SWSREQ_032E
status: PASS
tags: fsd319, swsreq

The software shall be designed so that there are no safety issues if it is restarted, no matter in what manner the restart was performed.

Requirement: Valid ID numbers SWSREQ_033A
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_031

If the ID number in the production data is equal to 0x00000000 or 0xFFFFFFFF, the unit shall enter safe state.

Requirement: Valid ID numbers SWSREQ_033B
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_031
Source: DREQ_28B

The validity of the configured serial numbers shall be checked at start-up. The serial numbers settings are invalid if the network ID = 0, or if the serial number setting for the node itself does not match the serial number in its production data.

Requirement: Radio black channel SWSREQ_034A
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001
Source: DREQ_RADIO_1

The radio communication shall be implemented as a black channel.

Requirement: Radio sequence counter SWSREQ_034B
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

A sequence counter shall be used to protect from repeated packets. Receiving nodes shall discard packets with bad sequence counter.

Requirement: Radio CRC SWSREQ_034C
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

All radio messages shall be protected by 24 bits CRC over the complete radio packet.

Requirement: Safe data hash SWSREQ_034D
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

All radio messages shall include a 32 bit hash of all the safety information in the packet, and shall additionally be seeded with the following information:

  • Serial numbers of all nodes in the system

  • Serial number of the transmitting unit (of the unit or installed memory card, see Networks (SREQ_29B))

  • Hash of the configuration

  • Firmware version of both CPUs of the transmitting unit

Note

This guarantees that all nodes in a radio network agree on the information above.

Requirement: Stateless safety information SWSREQ_034E
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

No state information shall be used between packets. Every packet shall contain all safety related information.

Requirement: Timeout SWSREQ_034F
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

All failure indications shall be implemented by detecting absence of safety packets (timeout).

Requirement: Global memories (safety information) SWSREQ_035A
status: PASS
tags: fsd319, swsreq

Each node in a network shall have a configurable number of global memories, in multiples of 16, between 0 and 256.

Requirement: Global memories (safety information) SWSREQ_035B
status: PASS
tags: fsd319, swsreq

Each node in a network shall be able to use the global memories of any other node in the network.

Requirement: Global memories (safety information) SWSREQ_035C
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

If a node in a network does not receive the global memories from another node within the specified radio timeout, the memories shall be set to zero.

Requirement: Radio timeout SWSREQ_035D
status: PASS
tags: fsd319, swsreq
Derived: BLCH0001

The radio timeout shall be configurable between 4ms up to 60000ms.

Requirement: Network same configuration SWSREQ_037A
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_012
Source: SREQ_20

All nodes in a network shall verify that they are running the same configuration. This shall be implemented by seeding the communication checksum/hash with the configuration hash.

Requirement: Network same firmware SWSREQ_037B
status: PASS
tags: fsd319, swsreq
Derived: TEST_150_006
Source: SREQ_20

All nodes in a network shall verify that they are running the same firmware. This shall be implemented by seeding the communication checksum/hash with the firmware hash.

Requirement: SimpleCAN SWSREQ_038A
status: PASS
tags: fsd319, swsreq

The CAN communication shall be implemented as SimpleCAN. All requirements of SimpleCAN shall be fulfilled.

Requirement: All code is safety code SWSREQ_100A
status: PASS
tags: fsd319, swsreq
Source: DREQ_30A

All code shall be considered safety code/safety related. This means all techniques and measures, code standards, and verification methods shall be applied to all code.

Requirement: Internal voltages monitoring SWSREQ_101A
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_214
Source: DREQ_3A

The CPU1 3.3V (3V3A) voltage shall be monitored by CPU2.

Requirement: Internal voltages monitoring SWSREQ_101B
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_214
Source: DREQ_3A

The CPU2 3.3V (3V3B) voltage shall be monitored by CPU1.

Requirement: Internal voltages monitoring SWSREQ_101C
status: PASS
tags: fsd319, swsreq
Derived: TEST_300_213
Source: DREQ_3A

The SIO_PWR voltage shall be monitored by both CPUs.