AIDA-C: Analog IC Design Optimization Embedding Ngspice As the Evaluation Engine
Total Page:16
File Type:pdf, Size:1020Kb
AIDA-C: Analog IC Design Optimization Embedding NGSpice as the Evaluation Engine Catarina Figueiredo Aleixo Thesis to obtain the Master of Science Degree in Electrical and Computer Engineering Supervisors: Prof. Nuno Cavaco Gomes Horta Prof. Rui Santos Tavares Examination Comittee: Chairperson: Prof. Teresa Maria Sá Ferreira Vazão Vasques Supervisors: Prof. Nuno Cavaco Gomes Horta Member of the Committee: Prof. Manuel Fernando Martins de Barros November 2019 ii Declaration I declare that this document is an original work of my own authorship and that it fulfils all the requirements of the Code of Conduct and Good Practices of the Universidade de Lisboa. iii iv Acknowledgments I would like to thank the Integrated Circuits group from Instituto de Telecomunicações for all the support given during the development of this work. I would like to give a special thanks to my parents and my sister for being always by my side and for the way they raised me. Lastly, I would like also to thank my boyfriend Valter, for always supporting and helping me. v vi Resumo Na automatização do dimensionamento de circuitos integrados analógicos duas abordagens podem ser seguidas: knowledge-based ou optimization-based, sendo que a última é ainda subdividida em duas categorias, equation-based ou simulation-based. Relativamente ao dimensionamento baseado em simulações, o método de avaliação é sustentado num simulador de circuitos, como é o caso do AIDA- C, um otimizador de circuitos integrados analógicos. O trabalho desenvolvido ao longo desta tese visa integrar um simulador de circuitos open-source, nomeadamente o NGSpice, no AIDA, que atualmente utiliza o ELDO, um simualdor comercial. Para verificar que comandos devem ser invocados no NGSpice, para que os valores obtidos para as várias medidas sejam o mais próximas possível dos valores obtidos no ELDO, várias netlists foram simuladas em ambos os simuladores, para garantir que os outputs obtidos são bastante similares. Integrar o NGSpice no AIDA requereu o desenvolvimento de uma interface, visto que o ficheiro de saída do NGSpice não é compatível com o ficheiro que o AIDA espera receber com todas as medidas e os seus respetivos valores. Esta interface foi desenvolvida em Python e permite executar várias simulações em paralelo. O paralelismo desta interface permite aumentar o seu desempenho, culmatando as limitações do NGSpice, principalmente quando são simulados corners. Foi feita uma análise estatística aos resultados obtidos, onde se obtiveram intervalos de confiança a 95% para os erros relativos de cada uma das medidas obtidas, onde se provou que o NGSpice pode substituir o ELDO como simulador do AIDA. É preciso ter em consideração que os resultados obtidos pelo AIDA em cada otimização variam, não só entre simuladores, mas também entre simulações, para o mesmo simulador, visto que o algoritmo desenvolvido é baseado num processo estocástico, pelo que, para ser possível comparar diretamente os dois simuladores de forma justa e equitativa, os pontos simulados no ELDO foram posteriormente simulados no NGSpice e vice- versa. vii viii Abstract Two distinct approaches can be followed when automatizing analog IC sizing: knowledge-based or optimization-based. The latter is subdivided into two categories: equation-based and simulation-based. Simulation-based sizing uses a circuit simulator as evaluation engine, which is the case of AIDA-C, an Analog Integrated Circuit Design Automation environment. The work developed throughout this thesis aims to integrate an open source circuits simulator, namely the NGSpice, into AIDA, which currently uses ELDO as its simulation engine. Multiple netlists were run in NGSpice in order to check which simulation commands should be invoked, to guarantee that the corresponding outputs match with ELDO’s outputs. Integrating NGSpice into AIDA required the development of an interface, since the latter has a specific input format which is not compatible with NGSpice’s output. This interface is written in Python and is able to run multiple netlists in parallel. The parallelism allows to increase the interface performance, which had to overcome NGSpice limitations, particularly when running corners. The results obtained were analysed statistically, where 95% confidence intervals for the relative errors of each performance measure were obtained, proving that NGSpice can be AIDA’s simulation engine. AIDA’s outputs always differ among optimizations, even using the same simulator, due to the algorithm used, which is based on a stochastic process. Taking this into account, to fairly compare both simulators the points simulated in ELDO were then simulated in NGSpice, and vice-versa. ix x Table of Contents Introduction........................................................................................................................................ 1 1.1 Motivation .................................................................................................................................. 1 1.2 Circuit-level EDA ........................................................................................................................ 2 1.3 Challenges and Benefits of an Open Source Evaluation Engine ............................................... 3 1.4 Goals ......................................................................................................................................... 3 1.5 Document Outline ...................................................................................................................... 4 Related Work and AIDA Framework ................................................................................................. 5 2.1 Optimization-based EDA Tools .................................................................................................. 5 2.2 AIDA Framework ....................................................................................................................... 6 2.3 Evaluation Engines .................................................................................................................... 8 2.3.1 Summary ......................................................................................................................... 9 2.4 Conclusions ............................................................................................................................. 10 NGSpice Evaluation ........................................................................................................................ 11 3.1 Requirements .......................................................................................................................... 11 3.2 NGSpice Execution Modes ...................................................................................................... 12 3.3 NGSpice Parameter Level ....................................................................................................... 13 3.4 NGSpice and ELDO Netlists .................................................................................................... 13 3.5 NGSpice and Corners Simulation ............................................................................................ 18 3.6 NGSpice Alterparam ................................................................................................................ 23 3.7 Conclusions ............................................................................................................................. 25 Proposed Solution Architecture and Implementation ....................................................................... 27 4.1 Workflow of The Proposed Solution ......................................................................................... 27 4.1.1 Calculate Measures ....................................................................................................... 29 4.1.2 Run Corners .................................................................................................................. 29 4.1.3 Output File ..................................................................................................................... 30 4.1.4 Change Parameter Values ............................................................................................ 30 4.1.5 Interface Development Language .................................................................................. 31 4.2 Implementation Details ............................................................................................................ 32 4.2.1 Run ACEI ....................................................................................................................... 32 4.2.2 Netlists Generation to Run Corners ............................................................................... 33 4.2.3 Run Each Corner ........................................................................................................... 36 4.2.4 Generate Output File ..................................................................................................... 38 4.3 Conclusions ............................................................................................................................. 40 xi Results ............................................................................................................................................ 41 5.1 Circuits Optimization ................................................................................................................ 41 5.2 NGSpice vs ELDO ..................................................................................................................