- English
- ePUB (mobile friendly)
- Available on iOS & Android
CAD of Circuits and Integrated Systems
About This Book
This book addresses the difficulty of obtaining a quality solution, that is, pre optimal or even optimal, in a reasonable time from a central processing unit (CPU). As polynomial problems can be treated by exact methods, the problem posed concerns non-polynomial problems, for which it is necessary to develop efficient algorithms based on heuristics or meta-heuristics. Chapter 3 of this book demonstrates how to develop such algorithms, which are characterized by: an initialization of argued solutions (sometimes, the global optimum can be obtained from such an initialization); a non-random generation of solutions (to avoid generating the same solution several times, or even generating solutions that cannot be achieved); avoidance of being trapped by a local optimum; good use of CPU time by reducing the size of the space of solutions to be explored (which is often very large for such problems) without compromising the quality of the solution; plus a reasoned displacement from one solution to another, to improve the quality of the solution as the processing is carried out. These aspects are applied to concrete applications in the design of integrated circuits and systems at various levels. To do this and to help the reader better understand this problem, Chapters 1 and 2 present basic notions on computational complexity, and the design of integrated circuits and systems.
Frequently asked questions
Information
1
Basic Notions on Computational Complexity and Approximate Techniques
1.1. Computational complexity
1.1.1. Introduction
- – program data: for example, sorting about 10 numbers requires less execution time than sorting out millions of numbers;
- – quality of the code generated by the compiler: codes generated by programming languages do not all have the same quality (this is the case of C, C++ and Java: if the application is not object-oriented and will be executed on some platform (operating system, processor frequency, memory size, etc.), then it is better to implement it in C, which generates a “lighter” code);
- – computational complexity: this metric gives the developer an idea of the execution time of their program, independently of programming language and platform (processor, memory capacity, etc.). Computational complexity is therefore an important concept, all the more so as it offers the developer an indication on whether their program takes a reasonable CPU time to reach results, even when significant resources (processor frequency, memory capacity) are at their disposal. In other terms, it may signal to the designer the need to modify their algorithm, if it takes an “infinite” time to reach results.
1.1.2. Big O notation
1.1.2.1. Sum
1.1.2.2. Product
1.1.3. Ω Notation
Table of contents
- Cover
- Table of Contents
- Preface
- 1 Basic Notions on Computational Complexity and Approximate Techniques
- 2 Basic Notions on the Design of Digital Circuits and Systems
- 3 Case Study: Application of Heuristics and Metaheuristics in the Design of Integrated Circuits and Systems
- References
- Index
- End User License Agreement