Analisis Perancangan Parameter dalam Pengukuran Kinerja Pada Alur Perancangan Embedded System Maman Abdurohman1, Kuspriyanto2, Sarwono Sutikno3, Arif Sasongko4 STEI Institut Teknologi Bandung, Jln. Ganesha 10 Bandung Indonesia 1
[email protected],
[email protected],
[email protected], 4
[email protected] 1234
Abstrak
Fase 1 : Spesifikasi Produk Fase 2 : Pemisahan HW/SW
Fase 3 : Perancangan HW/ SW secara rinci
Perlu Waktu 2 – 6 bulan
Perancangan HW
Perancangan SW
Alur perancangan adalah tahapan proses untuk membuat suatu model. Pada alur perancang embedded system terdapat beberapa tahapan utama yaitu : spesifikasi produk, pemisahan hw/sw, perancangan rinci hw dan sw, integrasi dan pengujian. Tahapan tersebut digunakan oleh perancang embedded system saat ini. Pemodelan level transaksi adalah salah satu cara lain yang berbeda dalam proses perancangan embedded system. Dalam mengukur dua buah model alur perancangan yang berbeda diperlukan paramater yang tepat sehingga bisa membandingkan kedua alur perancangan dengan tepat. Pada paper ini telah dibuat beberapa paramater untuk mengukur kinerja dari dua buah alur proses perancangan. Parameter yang tepat untuk mengukur kinerja alur perancangan adalah : efesiensi perancangan (Tp), akurasi () dan waktu simulasi (Ts). Ketiga parameter tersebut dapat digunakan sebagai alat ukur yang digunakan untuk membandingkan dua buah alur proses perancangan yang berbeda. Kata Kunci : alur perancangan, paramter, efesiensi perancangan, akurasi dan waktu simulasi.
listrik, flexibilitas dan skalabilitas.
Fase 4 : Integrasi HW/ SW Fase 5 : Pengujian Penerimaan
Fase 6 : Pemeliharaan dan Upgrade
Gambar 1. Alur proses perancangan embedded system secara umum
1. Pendahuluan
Dalam merancang sebuah embedded system bisa dilakukan dengan berbagai cara. Alur pemodelan seperti gambar 1 adalah alur pemodelan konvensional yang selama ini dipakai.
Alur proses perancangan adalah tahapan untuk menyelesaikan suatu perancangan. Salah satu alur proses perancangan adalah untuk proses perancangan embedded system. Perancangan embedded system dimulai dengan spesifikasi produk, pemisahan HW/SW, perancangan HW/SW secara rinci, integrasi dan pengujian, seperti pada gambar 1. Biasanya ada dua metrik yang digunakan untuk menentukan kesesuaian hasil rancangan yaitu biaya dan kecepatan. Kedua metrik tersebut banyak digunakan dalam proses perancangan. Metrik lainnya seperti ukuran, konsumsi
Pemodelan Dengan Tingkat Abstraksi Berbeda Alur pemodelan dapat dibuat sesuai dengan kebutuhan perancang. Peningkatan abstraksi model merupakan salah satu cara untuk mempercepat proses pemodelan. Abstraksi model menunjukan tingkat ketelitian suatu model. Semakin tinggi tingkat abstraksi suatu model, proses yang dilakukan semakin cepat. Sebagai trade off dari kecepatan adalah penurunan tingkat ketelitian. Pada perancangan konvensional pada level RTL satuan terkecil rancangan adalah : komponen komputasi, sinyal data, sinyal kendali dan sinyal clock.
Sinyal data, kendali dan clock berperan dalam komunikasi antar komponen komputasi. Pada tingkat kompleksitas tertentu perancangan dengan rincian sinyal yang akurat cukup memadai. Kelebihan model ini adalah tingkat akurasi cycle dan clock yang tinggi sehingga hasilnya lebih presisi. Pendefinisian yang rinci komponen komputasi beserta sinyal-sinyal yang terdapat didalamnya dan interface yang menghubungkannya dengan dunia luar dapat dipandang suatu kelebihan. Pada sisi lain hal ini dapat dipandang sebagai hambatan untuk kecepatan simulasi. Pemodelan lain adalah pemodelan level transaksi (transaction level modeling, TLM). Pemodelan ini memiliki abstraksi yang lebih tinggi. Kata kunci pemodelan TLM adalah transaction yaitu pembungkusan proses transaksi. Transaksi dilakukan dengan mengakses channel tanpa perlu memperhatikan proses yang ada di dalamnya. Abstraksi Perancangan Abstraksi perancangan adalah tingkat pandang perancang terhadap objek rancangan. Gambaran yang cukup jelas tentang konsep abstraksi ini adalah pada proses perancangan perangkat lunak terstruktur yang berbasis aliran data (data flow). Pada perancangan ini terdapat level-level abstraksi perancangan dimulai dari diagaram kontek, diagram alir data level 1, level 2 dan seterusnya. Pelevelan seperti itu menunjukan adanya tingkat abstraksi yang berbeda pada masing-masing levelnya. Dalam perancangan embedded system perancangan dimulai dari yang paling rendah yaitu level transistor, gerbang, flip-flop, register dan elektronik. Perancangan level transistor dan gerbang sudah lama ditinggalkan karena proses verifikasinya yang sangat lambat dan tidak memadai lagi untuk memenuhi tuntutan kecepatan perancangan. Dengan kemampatan IC lebih dari 5 milyar gerbang per chip, perancangan berbasis gerbang dan flip-flop tidak lagi memadai terutama karena proses verifikasinya yang lambat. Perancangan RTL (Register Transfer Level) Peningkatan level abstraksi perancangan dilakukan dengan meningkatkan level abstraksi perancangan dari level gerbang ke Register Transfer Level (RTL). Langkah ini sangat signifikan dan ada yang menyebutnya sebagai revolusi teknologi [5] bagi peningkatan produktifitas perancang. Perancang tidak lagi disibukan untuk membahas pada level gerbang. Perancangan level gerbang sudah dianggap mafhum dan tidak perlu lagi dibahas. Perancangan dimulai dengan mendefenisikan komponen-komponon diatas gerbang yaitu register. Terdapat dua buah bahasa
perancangan level RTL yang dikenal luas dan telah distandarkan oleh IEEE yaitu Verilog dan VHDL. Keduanya, secara de facto, dianggap sebagai bahasa perancangan perangkat keras, Hardware Description Language (HDL) pada level RTL. Pada awalnya, kedua bahasa ini bukan dirancang sebagai bahasa pemrograman sebagaimana halnya C++ atau Basic. HDL adalah editor yang digunakan untuk menyimpan notasi hasil rancangan. Pada saat ini kebutuhan perancangan semakin meningkat dengan semakin rumitnya objek rancangan sesuai dengan tuntutan pengguna. Dengan kenyataan ini, level abstraki RTL dianggap belum menjawab tuntutan perkembangan embedded system. Beberapa kendala yang dialami dalam perancangan level RTL adalah : Semakin mampatnya teknologi IC dengan kemampuan meletakan milyaran transistor pada suatu chip yang kecil. Semakin kompleknya aplikasi serta integrasi dengan berbagai teknologi : komunikasi, kendali, sistem mobile dan sistem tersebar. Semakin flexibel fungsionalitas perangkat keras dan perangkat lunak. Semua fungsi bisa diimplementasikan dalam perangkat keras maupun perangkat lunak.
2. Kerangka Pemodelan Proses Aplikasi yang berbeda memerlukan pemodelan dan bahasa yang berbeda. Berikut ini beberapa contoh model dan bahasa yang banyak digunakan untuk memodelkan aplikasi : 1) StateChart Dikenalkan oleh David Harel pada tahun 1987 dan diperbaharui tahun 1989. Model ini menjelaskan proses komunikasi yang terdapat pada model Finite State Machine (FSM). StateChart memiliki konsep komunikasi penggunaan memori bersama (shared memory). Model ini memiliki kelebihan dalam memodelkan sistem yang berorientasi kendali. Konsep utama dalam model ini adalah hirarki yang diistilahkan sebagai super-state. Definisi : State yang terdiri dari state lain disebut super-state. State yang terdapat dalam suatu super-state disebut sub-state dari super-state tersebut. Domain aplikasi yang cocok untuk dimodelkan dengan StateChart adalah sistem yang didominasi oleh kendali. Kemampuannya dalam memodelkan hirarki bersarang menjadi salah satu kelebihan model ini. Kelebihan lain adalah semantiknya yang cukup rinci.
2) Petri Net Jaringan petri adalah sebuah model perancangan sistem yang telah digunakan sejak tahun 1962. Beberapa pengetahuan dasar yang diperlukan untuk dapat memahami teori jaringan Petri dengan baik adalah : bahasa formal, otomata, sistem operasi, arsitektur komputer dan aljabar linear. Penggunaan model jaringan Petri untuk memodelkan suatu sistem dapat mempermudah perancang untuk mengetahui struktur dan prilaku dinamik dari sistem yang dimodelkan. Berbagai kemungkinan sistem yang dirancang dapat diketahui sejak awal, diantaranya informasi tentang kemungkinan deadlock atau ada proses yang tidak pernah berhenti. Perancang dapat mengubah berbagai parameter perancangan untuk mendapatkan hasil yang diinginkan sesuai dengan keperluan. Jaringan Petri tersusun dari empat bagian (tuple) yaitu : Sebuah himpunan place P, Sebuah himpunan transisi T, Sebuah fungsi masukan I dan Sebuah fungsi keluaran O. Suatu struktur jaringan Petri ditentukan oleh keempat bagian tersebut. Kekuatan Petri Net terletak pada pemodelan aplikasi sebab akibat yang saling tergantung. Namun kelemahannya tidak dapat mengakomodasi konsep hirarki dan tidak ada elemen bahasa pemrograman. 3) UML (Unified Modeling Language) Unified Modeling Language (UML) adalah bahasa untuk spesifikasi, visualisasi, pembangunan dan dokumentasi sistem perangkat lunak. Pada perancangan UML, sistem didefinisikan sebagai sekumpulan objek yang memiliki atribut dan metode. Atribut adalah variabel-variabel yang melekat pada objek dan metode adalah fungsi-fungsi yang dapat dilakukan oleh objek. Kelas objek tidak dapat berdiri sendiri, dalam penggunaannya, dilakukan perwujudan (instantiasi) dari objek tersebut. Beberapa tahapan dalam pemodelan UML adalah pendefinisan use case untuk analisis kebutuhan. Dilanjutkan dengan pendefinisian model berupa diagram yang menunjukan konsep atau objek. Diagram interaksi adalah notasi yang menunjukan kolaborasi antar objek. Tahap selanjutnya adalah pendefinisian diagram kelas. Dalam UML terdapat 13 tipe diagram : sequence diagram, state machine diagram, activity diagram, package diagrams, use case diagrams, class diagrams, timing diagram, communication diagram (collaboration diagram), component diagram, object diagrams, interaction overview diagrams, composite structure diagrams. 4) Kahn Process Network
Pemodelan jaringan proses dengan mode komunikasi asynchronous. Komunikasi antar proses dimasukan ke dalam bufer kanal. Bufer yang dimaksudkan diasumsikan sebagai FIFO yang terdapat pada kanal komunikasi. Komunikasi antar proses menggunakan antrian dalam FIFO. Hanya satu proses yang boleh membaca dari suatu antrian tertentu. Sehingga, ketika data akan dikirim ke beberapa proses, harus dilakukan duplikasi data. 5) VHDL VHDL adalah kependekan dari Very High Speed Integrated Circuit Hardware Description Language, sebuah bahasa untuk menjelaskan/memodelkan perangkat keras. Instruksi dalam VHDL diekseskusi secara bersamaan(concurrent) atau berurutan (sequential). Bahasa ini telah distandarkan berdasar Standar Internasional IEEE Std 1076-1987 dan diperbaharui oleh standar IEEE Std 1076-1993. Standar ini diperbaharui lagi pada tahun 1999 dengan tambahan fitur sinyal analog dan campuran sinyal digital melalui standar IEEE Std 1076.1-1999. VHDL secara terus menerus diperbaharui. VHDL digunakan untuk pengembangan ASIC(Application Specific Integrated Cicuits). VHDL dapat dipakai untuk memodelkan perilaku sistem terbebas dari teknologi targetnya. Termasuk didalamnya untuk memodelkan mikro kontroller, koder (dekoder), model perilaku mikroprosesor, dan perangkat RAM. Dalam VHDL, setiap untit dimodelkan sebagai sebuah Entity. Instantiasi entity ditulis dalam architecture. Untuk setiap entity, terdapat minimal satu arsitektur. Setiap arsitektur mengacu pada satu buah entity. 6) SystemC SystemC adalah library C++ yang menyediakan berbagai komponen untuk digunakan pada perancangan level transaksi. Kemampuan yang dimiliki SystemC adalah pemrograman sekuensial sebagaimana C++ dan pemrograman concurrent. Kemampuan pemrograman concurrent ini memungkinkan SystemC untuk digunakan dalam memodelkan komponen perangkat keras dan perangkat lunak yang komplek. Dibandingkan dengan VHDL dan Verilog, SystemC memiliki kelebihan dalam hal pemrograman terstruktur yang tidak dimiliki oleh VHDL dan Verilog. Dalam hal ini SystemC memiliki fleksibilitas yang lebih tinggi sebagaimana halnya bahasa C++. Kelebihan lain adalah sifat alami SystemC sebagai bahasa C++, sehingga spesifikasi perangkat keras yang ditulis dalam bahasa C
tidak perlu lagi diubah ke dalam bentuk lain[13]. Library SystemC digunakan untuk mendukung pemodelan level sistem. SystemC mendukung berbagai level abstraksi dan dapat digunakan untuk perancangan dan verifikasi yang cepat dan efesien. Library SystemC disediakan oleh Open SystemC Initiative (OSCI), sebuah organisasi nirlaba yang terbuka. OSCI didukung oleh sejumlah perusahaan, universitas dan individu yang tertarik pada pengembangan pemodelan dengan abstraksi yang lebih tinggi. Library SystemC dapat diperoleh secara gratis di www.systemc.org. Pendefinisan SystemC berada diatas bahasa C++. Terdapat beberapa bahasa inti dan tipe data yang terdapat dalam SystemC. Semuanya dibangun diatas bahasa C++. Bahasa inti terdiri dari Module/Process, Port/Interface, Event, Channel dan Event-driven simulation kernel. Tipe data yang telah didefinisikan terdiri dari 4-valued logic types (01XZ), bit/logic vector, arbitrary precision integer, fixed point dan tipetipe lain yang didefinisikan langsung oleh pengguna berdasarkan bahasa C++. Pada lapis diatasnya terdapat elementary channel seperti Signal, timer, mutex, semaphore dan FIFO yang menyediakan mekanisme komunikasi antar objek secara concurrent. Module adalah kelas C++ yang membungkus objek perangkat keras atau perangkat lunak. Module ini didefinisikan dalam SystemC sebagai kelas sc_module. Module ini setara dengan entity/architecture pada Verilog atau VHDL, yang mewakili suatu blok dasar komponen. Suatu module dengan module lain berkomunikasi melalui channel dan port. Dalam module terdapat sejumlah proses concurrent sebagai implementasi prilaku komponen tersebut. Port adalah objek yang terdapat dalam module, yang berfungsi menghubungkan module dengan dunia luar. Port-port yang telah didefinisikan dalam SystemC adalah sc_in<>, sc_out<>, sc_inout<>, sc_fifo_in<>, sc_fifo_out<> dll. Terdapat dua jenis proses yaitu : SC_METHOD dan SC_THREAD. Keduanya mirip hanya berbeda dalam masalah pewaktuan. SC_METHOD tidak dapat dihentikan sementara pada saat eksekusi. SC_THREAD dapat dihentikan sementara pada saat eksekusi. Channel adalah media komunikasi SystemC. Sifatnya lebih umum dibandingkan sinyal. Beberapa channel dalam SystemC seperti sc_signal, sc_fifo, sc_semaphore dll. Prinsip komposisi sama dengan perancangan hirarki. Pada sistem yang komplek, komposisi sangat diperlukan. 7) SystemVerilog
SystemVerilog adalah pengembangan dari Verilog standar. SystemVerilog sering disebut sebagai generasi ketiga Verilog. Generasi pertamanya adalah Verilog 1995 kemudian Verilog-2001 dan terakhir SystemVerilog[15]. Beberapa fitur baru yang terdapat dalam SystemVerilog : Interface yang berfungsi membungkus komunikasi dalam rancangan komponen, Tipe data, Structure dan union dan Instruksi-instruksi pemrograman. SystemVerilog adalah lingkungan pemrograman orientasi level sistem yang merupakan pengembangan dari Verilog-2001[5]. Penambahan modul-modul baru dalam SystemVerilog dilakukan untuk menjawab tantangan perancangan perangkat keras yang semakin komplek. Penambahannya sendiri dipengaruhi oleh beberapa pemrograman lain, yaitu VHDL, C++ dan OpenVera. Dengan penambahan fitur-fitur yang memiliki kemampuan yang sama dengan VHDL dan C, maka SystemVerilog lebih fleksible. SystemVerilog juga mengkombinasikan HDL (Hardware Description Language) dengan HVL (Hardware Verification Language)[14]. 8) SpecC SpecC adalah bahasa pemodelan yang memisahkan secara nyata antara komunikasi dan komputasi dalam memodelkan embedded system. Deskripsi dalam SpecC terdiri dari behavior, channel dan interface. Channel membungkus proses komunikasi. Interface menghubungkan antara behavior dan channel. Beberapa bahasa pemodelan yang lain adalah : Pearl, Chill, Step7, SpecCharts, Estelle, Lotos, Silage, Rosetta, Esterel dan Matlab/Simulink.
3. Perbandingan Pemodelan Pemodelan Proses Perancangan Level RTL Proses perancangan perangkat keras terdiri dari spesifikasi sistem, pemisahan HW/SW, perancangan rinci HW dan SW, integrasi dan pengujian. Proses ini dilakukan secara berulang sampai memenuhi persyaratan yang telah ditetapkan yaitu memenuhi batasn biaya dan kecepatan. Proses perancangan embedded system tersebut membutuhkan waktu beberapa bulan. Proses iterasi perancangan akan memerlukan waktu yang cukup lama. Sampai terbentuknya suatu prototipe pada level RTL, diperlukan waktu untuk memproses tahapan berikut : waktu spesifikasi, waktu pemisahan HW/SW, waktu perancangan rinci HW/SW, waktu integrasi HW/SW. Suatu spesifikasi produk dirancang ke dalam bentuk rancangan RTL setelah, kemudian dilakukan verifikasi
dan perbaikan. Proses ini terus berulang sampai memenuhi spesifikasi awal. Alur perancangan embedded system pada level RTL adalah sebagai berikut : Mulai
Pemodelan (C, C++) Konversi Manual
Perbaikan
Analisis
Hasil
Perbaikan
VHDL/Verilog
Simulasi
Sintesis
…….
Gambar 2. Alur proses perancangan embedded system level RTL Perancangan level RTL adalah perancangan yang rinci, jika terjadi kekeliruan maka harus diulang kembali dari proses spesifikasi. Pemodelan Level Transaksi Pada perancangan level transaksi proses pemodelan dilakukan dengan menggunakan metode perancangan level transaksi. Pada level transaksi proses komunikasi antar komponen dilakukan sebagai sebuah transaksi dengan mengakses suatu channel transaksi. Kelebihan cara seperti ini adalah waktu yang diperlukan untuk simulasi suatu rancangan tidak terlalu lama. Mulai
Pemodelan SystemC
Perbaikan
Perbaikan
Analisis
Simulasi
Hasil
Sintesis
…….
Gambar 3. Alur proses perancangan embedded system level transaksi
Dengan adanya simulasi tersebut maka proses iterasi dapat dilakukan diawal dengan waktu yang lebih cepat. Semua proses perancangan dimodelkan ke dalam satuan waktu simulasi. Perancangan level transaksi memiliki tahapan proses sebagai berikut : spesifikasi, pemodelan dan simulasi dalam TLM. Proses perbaikan dilakukan jika hasil simulasi belum memenuhi batasan yang telah ditetapkan.
4. Analisis Alat Ukur Alur Pemodelan Dalam rangka membandingkan dua buah alur pemodelan dibutuhkan beberapa kriteria ukuran yang bisa menjadi acuan kinerja masing-masing alur perancangan. 1.
Efesiensi perancangan : Te Total waktu yang diperlukan oleh perancang untuk membuat sebuah model. Pengukuran TTLM = ∑TTLMD + TRTL TRTL = ∑ TRTL Te = TRTL/TTLM
Keterangan : TTLM = waktu total perancangan dengan proses TLM TRTL = waktu total perancangan dengan proses RTL Te = Waktu efesiensi Menggunakan waktu perkiraan untuk mengukur kesulitan suatu bagian proses dalam perancangan Menggunakan MOS (Mean Opinion Score) untuk penilaian rata-rata dari pengguna Menggunakan standar waktu Man day yang setara dengan 10 baris code ditambah dengan dokumentasi. Tujuan akhir dari proses perancangan adalah mengukur waktu yang diperlukan untuk melakukan perancangan dari tahap spesifikasi sistem sampai adanya prototipe sebuah rancangan. Parameter untuk mengukur waktu proses perancangan dapat disebut sebagai tingkat efesiensi suatu perancangan dibandingkan dengan metode perancangan yang telah ada. Perbandingan ini bertujuan untuk mengetahui tingkat penghematan waktu proses perancangan yang telah diperbaiki. Tingkat efesiensi (Te) proses perancangan diperoleh dengan perbandingan total waktu perancangan yang ada (TRTL) dibagi dengan total waktu perancangan baru
(TTLM)
2.
Te = TRTL/TTLM
Kecepatan simulasi : TS Diperoleh dengan cara mengukur waktu simulasi total. Pengukuran Ts = Tp + To + Tu Keterangan Tp = Waktu pemrograman To = Waktu sistem Tu = Waktu pengguna
6. Acknowledgment Maman Abdurohman mengucapkan terimakasih kepada departemen Teknik Informatika IT Telkom dan departemen Teknik Elektro STEI ITB atas dukungan finansial dan perangkat penelitian sehingga penelitian ini bisa diselesaikan.
7. Daftar Pusataka [1] [2] [3]
Waktu program diambil dengan perintah pengambilan waktu dalam pemrograman netbean. Kecepatan simulasi adalah waktu yang diperlukan untuk melakukan satu simulai rancangan. Waktu proses ini diperlukan untuk membandingkan kecepatan proses simulasi dengan menggunakan metode baru (TLM) dibandingkan dengan metode lama (RTL).
[4]
3.
[7]
Akurasi : Membandingkan hasil rancangan TLM dan RTL Waktu yang diukur transaction latency dan processing delay. Pengukuran : = Ins RTL - Ins TLM
Parameter akurasi a. Akurasi hasil akhir tanpa waktu (logic numeric) b. Akurasi waktu Pengukuran akurasi diperlukan untuk memastikan bahwa hasil perancangan baru masih tetap memenuhi kebutuhan sesuai spesifikasi sistem awal. Pengukuran ini dilakukan dengan membandingkan hasil simulasi dengan menggunakan TLM dan RTL.
[5]
[6]
[8] [9] [10]
[11]
[12] [13] [14]
5. Kesimpulan Berdasarkan penelitian diatas dapat diambil kesimpulan bahwa terdapat tiga buah alat ukur yang dapat digunakan untuk mengukur kinerja dua buah metode atau alur perancangan embedded system yaitu : Efesiensi perancangan, Akurasi dan Kecepatan Simulasi.
[15] [16] [17]
Sematech, 1997. http://www.sematech.org Frank Vahid and Tony Givargis. “Embedded system A Unified Hardware/Software Introduction”. JohnWiley & Sons, Inc., New York, 2002. Palnitkar, Samir. “Verilog® HDL: A Guide to Digital Design and Synthesis, Second Edition”. Sun Microsystems. Inc. California. 2003. Gordon E. Moore. “Cramming more components onto integrated circuits”. Electronics, 38(8):114-117, 19 April 1965. Cornet, Jerome. “Separation of Functional and NonFunctional Aspects in Transactional Level Models of Systems-on-Chip”. Dissertation at Institut Polytechnique De Grenoble. 2008. Mathaikutty, Deepak A. “Metamodeling Driven IP Reuse for System-on-chip Integration and Microprocessor Design”. Dissertation at Virginia Polytechnic Institute and State University. 2007. Ptolemy II Project. “http://ptolemy.eecs.berkeley.edu/ptolemyII/main.htm”. UC. Berkeley. 2008. Gupta, Rajesh Kumar. “Co-Synthesis of hardware and software for digital emmbedded systems ”. Dissertation at Stanford University. 1993. Mooney III, Vincent John. “Hardware/Software codesign of run-time systems”. Dissertation at Stanford University. 1998. Chatha, Karamvir Sigh. “System-Level Cosynthesis of Transformative Application for Heterogeneous Hardware-Software Architecture”. Dissertation at University of Cincinnati. 2001. Patel, Hiren D. “Ingredients for Successful System Level Automation & Design Methodology”. Dissertation at Virginia Polytechnic Institute and State University. 2007. Leung, Julie. Kern, Keith. Dawson, Jeremy. “Genetic Algorithms and Evolution Strategies”. Berger, Arnold S. “Embedded System Design : An Introduction to Processes, Tools, and Techniques”. CMP Books. 2002. Marwedel, Peter. “Embedded system Design”. University of Dortmund. Germany. 2006. Genovese, Matt. ”A Quick-Start Guide for Learning SystemC”. The University of Texas. Austin. 2004. Sutherland, Stuart. Davidmann, Simon. Flake, Peter. “SystemVerilog for Design”. Springer. 2006. Cummings, Clifford. “SystemVerilog’s priority & Unique – A Solution to Verilog’s full_case & parallel_case Evil Twins”. SNUG. Israel. 2005.