Dr. Mehran Goli
Senior Design Engineer
Senior Design Engineer
System-level Design and Analysis: Hardware complexity nowadays is an issue. Modern electronic circuits and systems consist of many different functional blocks including multiple (third party) Intellectual Property (IP) cores, various on-chip interconnects and memories. One possible solution to handle the complexity of the electronic circuits is to raise the level of abstraction towards the Electronic System Level (ESL). The academic and research communities have developed the ESL paradigm over the last decade to provide designers with new design methodologies, tools, and specific system design languages. By this mean, a system can be prototyped quickly and used as a reference model for lower levels of abstraction. Moreover, it provides designers with testing or evaluating the software parts of an embedded system before the actual hardware is manufactured. Although SystemC-based VPs reduce the complexity of modeling and simulation of SoC designs at the ESL, these are not the only steps for which a SystemC Virtual Prototype (VP) is implemented and used. Designers of such models may want to test new features and validate the capabilities of SoCs, i.e. to decide where to reuse existing IPs or add new (third-party) hardware blocks, perform design space exploration for the next generation of SoCs, etc. To handle each of the aforementioned tasks, accurate knowledge about the VP including both structure and behavior is necessarily required. This initial step in the design process considered as the Design Understanding phase i.e. Analyzing a given SystemC VP to know the respective components of the design (e.g. structure) as well as their relation to each other (e.g. behavior). We propose two novel SystemC-based VP analysis approaches, enabling designers to analyze a given VP from two perspectives: the debugger-based (Using GNU Debugger) and the compiler-based (using Clang) approaches.
Formal and Simulation-based Verification: Nowadays, digital systems have become pervasive in everyday lives. At the same time, they are increasingly used in cost-critical and life-critical applications, e.g. in the automotive or in the medical sectors. This has led to the extremely heightened importance of design correctness of these systems. The much earlier availability and the significantly faster simulation speed of Virtual Prototypes (VPs) in comparison to the Register Transfer Level (RTL) hardware models are the main reasons that VP used as a reference model for an early system verification in the design process. Hence, ensuring the correctness of VPs is of the utmost importance, as undetected faults may propagate to lower levels of abstraction and become very costly to fix. We propose a set of simulation-based and semi-formal (using model checker) verification approaches which automatically validates a given SystemC VP against both the TLM-2.0 rules and its specifications
Security Validation: Modern System-on-Chips (SoCs) are notoriously insecure. Hence, the fundamental security feature of IP isolation is heavily used, e.g., secured Memory Mapped IOs (MMIOs), or secured address ranges in case of memories, are marked as non-accessible. One way to provide strong assurance of security is to define isolation as an information flow policy in hardware using the notion of noninterference. Since insecure hardware opens up the door for attacks across the entire system stack (from software down to hardware), the security validation process should start as early as possible in the SoC design cycle, i.e. at the Electronic System Level (ESL). We propose the first dynamic information flow analysis at the ESL. Our approach allows validating the run-time behavior of a given SoC implemented using Virtual Prototypes (VPs) against security threat models, such as information leakage (confidentiality) and unauthorized access to data in a memory (integrity).
Machine Learning Techniques: Machin Learning provides systems the ability to automatically learn and improve from experience without being explicitly programmed. It focuses on the development of computer programs that can access data and use it to learn for themselves. We aim to utilize machine learning techniques for different aspects of CAD and electronic system design. We integrate a combination of static and dynamic methods (hybrid analysis) with machine learning techniques (e.g. regression analysis) to evaluate the error-resilience portions of a given design. The hybrid analysis is used to extract the simulation behavior of different design's portions. Then, machine learning techniques are applied to the extracted behavior of each portion to find a real approximated model (with negligible error). The original part is replaced with its corresponding estimated model to evaluate its impact on the final output of the design.
Approximate Computing: The increasing functionality of electronic systems due to the constant evolution of the market requirements makes the non-functional aspects of such systems (e.g. power, area or perfor- mance) a major concern in the design process. Approximate computing is a promising way to opti- mize these criteria by trading accuracy within acceptable limits. Since applying significant structural changes to a given design is very expensive and increases with the stage of development, the opti- mization solution needs to be incorporated into the design as early as possible. For the early design entry, modeling hardware at the Electronic System Level (ESL) design using the SystemC language is nowadays widely used in the industry. In order to apply approximation techniques to optimize a given SystemC design, designers need to know which parts of the design can be approximated. However, identifying these parts is a crucial and non-trivial starting point of approximate computing as the incorrect detection of even one critical part as resilient may result in an unacceptable output. This usually requires a large programming effort by designers, especially when exploring the design space manually. We aim to automatically identify the approximable portions of a given SystemC design, that can, in turn, be realized and mapped onto the approximate implementations by designers in the later design steps.