This thesis presents the development procedure and the utilization of a verification system. The topic was inspired by the development processes of Ericsson Hungary Ltd. The ETH/XH division is responsible for designing and producing modular microwave systems. The modules communicate via PCI Express protocol, thus the faultless operation of the system bus is essential.
The software providing the verification functionality consists of three main parts: a driver is responsible for the low-level communication with the devices, a Linux user space application with extended functionality and a remote client with a graphical user interface (GUI) for comfort purposes. The PCI Express and PCI protocols are software compatible. Therefore the driver layer implements the Configuration Access Mechanism (CAM) introduced in the PCI specification to access the configuration register space of the underlying devices. The user space application is responsible for communicating with the driver and manipulating the memory and I/O regions, making all PCI Express address spaces accessible and the functionality of the mapped devices verifiable.
The remote graphical client and the user space layer running on the target communicate via a predefined command line language suitable for our purposes. The interpreter is generated with the Lex (Lexical Analyzer Generator) and Yacc (Yet Another Compiler Compiler) programs. The GUI utilizing the JavaFX API contains a script scheduler making automated test deployment possible. The built-in data logger eases the post factum evaluation of the reports.
The final implemented software is capable of handling up to three PCI Express Root Complexes and all their respective bus systems; therefore it can be used to verify the functionality of all connected devices. The command line interface comes handy when prototyping or waking new devices; the automated script execution facilitates the procedure of repetitive regression tests supporting the tasks of its user.