by Robin Getz, Development Manager, MathWorks
Over the last two decades, the communications industry has made remarkable strides in technology, introducing innovations such as RF sampling ADCs and DACs, low-power Zero-IF transceivers, ever larger FPGAs integrated with multiple CPU cores, millimeter-wave devices, gallium nitride (GaN) devices, artificial intelligence (AI), and machine learning.
While semiconductor and device companies can swiftly create new devices, systems companies are grappling with the dual challenges of assimilating these sophisticated devices into their systems and keeping pace with the dynamic requirements of the end market. And the growing complexity of devices, algorithms, and techniques leads to development challenges.
The trend of increasing team sizes and the need to add specialized knowledge has also exacerbated these challenges, resulting in slower design times for many system-level developments. In addition, many communications engineers have been slow to adopt established development methods that computer scientists have created over the past 30-plus years, further compounding the problem.
Model-based design, test-driven development, and continuous integration are proven methodologies to accelerate the development process and deliver high-quality products with fewer bugs. These methodologies were initially designed for software development to enhance development process efficiency and quality. Now, these practices can be utilized for communication systems that are becoming increasingly software-oriented, such as software-defined radio, software-defined radar, or software-defined astronomy.
Model-based design (Figure 1) allows engineers to create system and component models before spending time building them in the physical world. Test cases can be created from requirements and run on these models to identify potential issues and inefficiencies before they are eventually discovered in the hardware integration phase, allowing for faster and more efficient development.
Test-driven development (Figure 2) enables code testing at each development stage. By creating test cases during the modeling stage, errors and bugs can be detected early, minimizing the time and cost involved in debugging and reworking. Moreover, test-driven development ensures that the code aligns with the system requirements by continually generating and executing new test cases on both models and actual designs as requirements evolve. This approach can help maintain code quality and prevent divergence from the project’s objectives.
For example, continuous integration (Figure 3) automates code building and testing, resulting in repeatable builds, faster testing and debugging, and more efficient development. Thorough testing through continuous integration also minimizes error and bug risk in the final product.
The common theme in these development methodologies is “shift left,” a software development term referring to the practice of moving quality assurance and testing activities earlier in the development process. The sharing of this common concept allows these different methodologies to be combined. The system model can provide the foundation for writing tests from this combined process, and these tests can be utilized to guide code implementation. With code changes, tests are automatically run to ensure existing functionality remains intact.
New tests can be added to the existing models as requirements are further defined to determine if a failure is caused by an algorithmic or implementation issue. In addition, continuous integration helps maintain the consistency of the model and code. Any changes made to the model are also reflected in the tests and vice versa. The development team can guarantee that the software functions as intended by integrating these practices and that changes are thoroughly tested before merging into the shared codebase.
A functioning model and passing tests can act as the executable specification as various artifacts are passed from individual to individual or from team to team (e.g., algorithmic, software, HDL, verification, or system integration teams). With the ability to run tests and observe the results, the teams are not just relying on an abstract specification. The team can execute exact test cases in everything from mathematical simulations to RTL simulators or directly on hardware, enabling them to identify the root cause and resolve issues more quickly.
Figure 4 depicts the integration of model-based design, test-driven development, and continuous integration workflows. This integrated workflow shifts the test and quality assurance burden earlier in the process from a traditional wireless development workflow. Any development process is rarely linear, and there are often iterations and backward steps as new requirements emerge during implementation.
Furthermore, unexpected discoveries during the development process can significantly impact the direction and scope of the project. Consequently, development processes must plan for these uncertainties and be flexible enough to adapt to changing requirements. These underlying tenets of development are important to remember when examining the development methodology.
The common test block evaluates whether a system meets the specified requirements and standards at every step of the development process, which involves both verification and validation. Verification is the process of evaluating a system or block to determine whether it meets the specified requirements and standards and focuses on whether the product is being built correctly. Validation is the process of evaluating the system to determine whether it meets the user’s needs and expectations. It focuses on the question of whether the right product is being built.
Benefits of Model-Based Design
Model-based design offers several benefits for modern wireless systems development such as accurate testing of different design configurations and scenarios. One of the main benefits of model-based design in wireless system development is the ability to quickly and accurately test different design configurations and scenarios. By creating and manipulating virtual models of the system, engineers can analyze wireless performance under a wide range of conditions and make informed design decisions.
This methodology can save time and resources compared to traditional design approaches, which often require building and testing physical prototypes. For example, if a designer wants to find out if the frequency offset correction algorithm is robust enough to handle the ±25 ppm clock source in stock, he or she can just simulate it.
By simulating different types of interference and error conditions, engineers can identify and address potential issues before they occur in the real world. This can help improve the wireless system’s reliability and robustness. Simulation can ensure a satellite communication system is robust enough to handle the channel impairments which are either difficult or expensive to reproduce in hardware in the lab.
Simulation also enhances the engineer’s insight into a system’s behavior, allowing the study of its dynamics and identifying key factors that influence its operation. By creating a simplified system, engineers can focus on critical behavioral aspects, gaining a more profound understanding of its functioning. This insight can drive system design optimization and ensure it operates efficiently and effectively.
Building hardware prototypes can be very costly, especially if multiple iterations are required to refine the design. In contrast, creating and testing virtual models is typically much more affordable, allowing engineers to test and optimize a design without incurring high physical prototyping costs.
For example, simulating a model may reveal that a particular chain of components or subsystems is not working as intended, allowing engineers to modify or replace them before committing to physical construction. Engineers can identify the most effective and efficient solution by testing different design configurations in virtual environments, ensuring the final hardware implementation is as cost-effective as possible.
Simulation and hardware can be combined to build test cases. Over-the-air tests can be completed with prototyping hardware. Detection and capture of “bad packets” resulting in a CRC error despite detecting the preamble can be saved to the host where they can be tested on various models in simulation, including floating point, fixed point, and RTL, to identify whether the issue is algorithmic or implementation based. Prototyping can rapidly capture a considerable amount of “bad packets,” enabling algorithmic teams to establish a robust testing framework.
Model-based design offers an alternative to document-centric workflows by enabling the use of system design partitioning models. By breaking down the system into model components, cross-domain concurrent team development, collaboration, and reuse become easier. Modern tooling allows for integrating all components into a single system-level simulation, even when different fidelity tools and levels are used for modeling. Tooling can also automatically generate and share documentation and web views of the models and simulations, which aids in audit and review processes. This approach brings together cross-disciplinary teams and their designs for a more streamlined and efficient workflow.
Challenges of Model-Based Design
While model-based design offers many benefits for wireless development, it also poses some challenges. Introducing new tools into the design flow for the team can potentially slow down the design process, as some individuals may need time to become proficient in using modeling tools and languages to manipulate system models. And while model-based design allows engineers to test and validate the wireless system performance along the way, it is still essential to validate the physical hardware once it is built and deployed.
As model-based design relies on software to design and simulate the wireless system, it is important to ensure that the software is reliable and accurate, which may require testing and validation of the software itself.
Whenever automatic code generation is used, there may be a potential decrease in the system performance from its theoretical maximum. However, there is always a tradeoff between engineering costs and deployment costs. While hand-coding may result in a smaller FPGA, for example, the time required to achieve a working solution can be significant. Time is a valuable resource that must be taken into consideration.
In summary, while model-based design offers many benefits for wireless development, it also requires careful planning and execution to ensure that the models are accurate, and the software is reliable. Engineers must be prepared to tackle the complexity and challenges of model-based design to achieve the desired results.
Tools and Software Platforms for Model-Based Design
Many tools are available for model-based design across various domains (e.g., mechanical, electrical, RF, and hydraulic systems), including MATLAB and Simulink. Tool choice depends on the specific project requirements, team expertise, and available resources. The design tools need to provide several capabilities and functionalities to perform model-based design specifically for wireless communications. For example, the software should provide a text-based and graphical modeling and simulation environment enabling engineers to design, simulate, and test systems in different domains, including digital baseband, RF, antenna, event-based, propagation.
It must also support various signal processing algorithms and techniques such as filtering, modulation, and demodulation. The software should provide tools for designing and testing RF front ends and antennas, including S-parameter simulations.
Hardware-in-the-loop simulation capabilities are also necessary so that engineers can test the wireless system with actual hardware and have a variety of supported communication mechanisms (e.g., USB, Ethernet, JTAG, etc.).
The software should be able to integrate with other tools and platforms, such as semiconductor hardware development kits, to enable wireless I/O and embedded software development environments. Finally, visualization and analysis tools are required to let engineers gain insights into system performance and optimize design parameters.
Overall, engineers should look for software tools like MATLAB which provide a comprehensive platform enabling them to design, simulate, and test wireless communication systems efficiently and accurately, and ultimately produce high-quality, reliable wireless products (Figure 5).
Leading By Example
BAE Systems was tasked with developing a satellite communication waveform that met military-standard MIL-STD-188-165A for a C4ISR radio and aimed to assess a new design flow that could reduce the development time. BAE Systems decided to undertake two development projects concurrently, one using the conventional design flow and the other using model-based design tools. Both projects would employ an equivalent set of cores to ensure a fair comparison. The parallel development allowed BAE Systems to compare the existing approach with model-based design on an actual project.
Using Simulink, BAE Systems successfully applied model-based design to build and deploy a MIL-STD-188 SDR waveform more than ten times faster than the traditional hand-coding approach. It took nearly six months for an experienced VHDL coder to hand-code a fully functional SDR waveform using the conventional design flow. In contrast, a less experienced engineer completed the same project using Simulink in a little over a week.
One of the fundamental aspects of model-based design is adopting standardized models and tests across the entire development process. It is no longer desirable to work based solely on a printed specification with minimal testing before the product is shipped. Instead, it is imperative to test what is being shipped and ship what is being tested, ensuring that the product meets the required standards and specifications.
Contributing to test cases (the executable specification) is sometimes more important than the actual implementation or model during development. This doesn’t mean that it’s not possible to prototype perform development in a higher-level environment like MATLAB or embedded Linux, while C code is eventually shipped for a bare metal system. System-level validation tests should be able to be run in both environments.
In the years ahead, further advancements will be made in model-based design for wireless and software tools refinement, simplifying the design and testing of wireless systems while making the process more efficient and effective. More semiconductor manufacturers are creating analog and digital models for their ICs that can be used in MATLAB or Simulink, enabling system engineers to be model users rather than model creators.
These developments are expected to accelerate wireless field growth and evolution, expanding its application range, and making wireless systems even more versatile, capable, and widespread. Using these proven development methodologies has the potential to revolutionize the way we communicate and drive innovation.