SYSTEMC DAN UML : PERANCANGAN BERORIENTASI OBJEK STUDI KOMPARATIF Maman Abdurohman1), Kuspriyanto2) Sarwono Sutikno3) Arif Sasongko4) 1 Teknik Informatika, IT Telkom, Jln. Telekomunikasi No.1 Bandung 2 STEI ITB, Jln. Ganesha 10 Bandung Telp : (022) 7565931, Fax : (022) 7565931 E-mail :
[email protected]),
[email protected]) ,
[email protected])
[email protected] UH
UH
H
U
U
HU
Abstract This paper presents a suitability between UML method and SystemC design in the case of hardware design. SystemC is the C++ library that uses object oriented programming method. This programming language is designed for System Level Design. UML Method is an object oriented design. Both, UML and SystemC, have a simmilarity on object oriented focus. In this paper we focused on simmilarity analysis as advantae values to ease in hardwaer software codesign. Both models have similarity on object, attribute and method definition. Keywords: UML, SystemC, System Level Desgin
Abstrak Paper ini memaparkan sejauh mana kesesuaian perancangan metode UML dan perancangan SystemC dalam kasus perancangan perangkat keras. SystemC adalah library C++ yang menganut metode pemrograman berorientasi objek. Pemrograman ini ditujukan untuk perancangan level system (System Level Design, SLD). Metode UML adalah metode perancangan yang berorientasi objek. Pada keduanya, UML dan SystemC, terdapat satu kesamaan fokus yaitu orientasi objek. Pada tulisan ini fokus pembahasan ditunjukan pada analisis kesamaan orientasi ini yang menjadi salah satu nilai lebih untuk memudahkan dalam perancangan bersama perangkat keras dan perangkat lunak (hardware software codesign). Kedua pemodelan ini memiliki kesamaan dalam pendefinisian objek, atribut dan method. Keyword : UML, SystemC, System Level Desgin
1. PENDAHULUAN Kebutuhan perangkat embedded system semakin hari semakin meningkat. Peningkatan ini didorong oleh peningkatan kebutuhan konsumen terhadap teknologi baru. Kebutuhan yang tinggi ini mendorong vendor untuk memperbaiki proses pengembangan embedded system. Salah satu tahap yang penting untuk dikembangkan adalah proses perancangan. Proses perancangan embedded system yang saat ini digunakan masih dianggap lambat untuk dapat merespon kebutuhan terhadap perangkat-perangkat embedded system. 0B
Proses perancangan embedded system dimulai dengan proses spesifikasi, pemisahan hardware dan software, pengembangan hardware dan software secara paralel dan dilanjutkan dengan simulasi bersama hardware dan software. Pada tahap akhir adalah implementasi sitem. Peningkatan pemodelan ini salah satunya adalah dengan pemodelan level transaksi (Transaction Level Model, TLM). Bahasa pemodelan yang banyak digunakan untuk pemodelan level transaksi adalah SystemC dan SystemVerilog. Keduanya merupakan bahasa pemodelan level sistem yang
saat ini banyak digunakan oleh para perancang [1]. Bahasa pemodelan SystemC banyak digunakan karena kemampuannya dalam mengkombinasikan antara perangkat lunak dan perangkat keras. SystemC pada dasarnya adalah C++ yang telah ditambahkan fitur-fitur untuk perancangan perangkat keras. Komponen-komponen perangkat keras dalam SystemC dipandang sebagai objek. Model perancangan umum yang saat ini banyak digunakan adalah perancangan yang berorientasi objek. Model perancangan yang berorientasi objek yang banyak digunakan adalah pemodelan UML (Unified Modeling Language). Pemodelan ini cocok untuk sistem yang didominiasi oleh objek. Secara de facto UML adalah bahasa pemodelan berorientasi objek yang saat ini banyak digunakan oleh perancang sistem perangkat lunak. Kedua pemodelan ini memiliki kemiripan karena keduanya sesuai untuk domain masalah dengan dominasi objek. Pada tulisan ini dievaluasi berbagai persamaan dan perbedaan kedua bahasa pemodelan ini.
secara berulang sehingga diperoleh model yang dapat memenuhi syarat awal embedded system. Selanjutnya model ini ditranformasikan secara manual ke dalam bahasa perancangan perangkat keras seperti VHDL atau Verilog. Proses ini dilakukan secara manual. Proses selanjutnya adalah simulasi, sintesis dan implementasi.
2. SYSTEMC SystemC adalah salah satu bahasa perancangan level sistem (System Level Design Language, SLDL) yang saat ini menjadi salah satu terobosan penting dalam peningakatan/perbaikan proses perancangan embedded system. SystemC adalah library C++ yang mendukung pemodelan perangkat keras. 1B
Proses perancangan konvensional melibatkan perancang untuk mentransformasikan rancangan dari pemodelan ke dalam bahasa perancangan perangkat keras seperti VHDL dan Verilog. Pada perancangan SystemC, pemodelan dilakukan dengan menggunakan rerangka kerja SystemC (Gambar 3). Pemodelan SystemC
Perbaikan
Analisis
Simulasi
Hasil
Sintesis
Gambar 1. Struktur dasar SystemC SystemC dapat digunakan untuk memodelkan pada berbagai level abstraksi [4]: Arsitektur : pengujian interaksi antar blok tanpa waktu Level Transaksi : waktu perkiraan Level Transfer Register : waktu akurat. Dengan adanya librari ini, pemodelan perangkat keras lebih mudah dilakukan.
…….
Gambar 3. Perancangan SystemC
Perancangan perangkat keras yang saat ini dilakukan terdiri dari beberapa tahapan dimulai dari pemodelan aplikasi sampai implementasi (gambar 2).
Dalam perancangan dengan SystemC pemodelan dilakukan dengan menggunakan bahasa C++ dan library SystemC. Perangkat keras dan perangkat lunak dapat dimodelkan secara bersama. Hasil pemodelan SystemC dapat langsung disimulasikan sehingga dapat diketahui hasilnya tanpa harus mentransformasikannya ke dalam bahasa lain, seperti VHDL dan Verilog.
Pemodelan (C, C++)
3. UML (UNIFIED MODELING LANGUAGE) UML adalah salah satu model perancangan perangkat lunak yang berorientasi objek. Disamping UML telah ada model perancangan yang populer yang sering digunakan dalam perancangan perangkat lunak yaitu perancangan terstruktur. Perancangan terstruktur adalah perancangan berorientasi proses dan data. Perbedaan kedua perancangan terletak pada fokus orientasi. Perancangan terstruktur lebih berorientasi kepada proses dan data sedangkan UML lebih berorientasi kepada objek. 2B
Konversi Manual
Perbaikan
Analisis
Hasil
VHDL/Verilog
Simulasi
Sintesis
…….
Gambar 2. Tahap pemodelan perangkat keras Rancangan embedded system pada tahap awal dimodelkan dengan menggunakan bahasa C, C++ atau mathlab. Spesifikasi ini kemudian dianalisis
12
Dalam perancangan terstruktur domain masalah dimodelkan sebagai kumpulan proses dan entitas/sumber (Gambar 4). Proses dimodelkan secara hirarki atas-ke-bawah (top-down). Pada tahap awal, sistem dimodelkan sebagai suatu proses besar dan entitas yang berinteraksi dengan proses
tersebut. Proses utama kemudian dirinci menjadi beberapa sub proses. Setiap sub proses diberi nomor proses. Bagai sub proses yang di dalamnya terdapat proses-proses lain yang lebih kecil, dapat dirinci lagi menjadi proses-proses yang lebih kecil.
PROSES
ALIRAN DATA PENYIMPAN DATA SUMBER / ENTITAS
Gambar 4. terstruktur
Komponen-kompnen
perancangan
Data mengalir dari sumber ke proses atau dari proses ke proses lain. Data mengalami perubahan setiap kali melewati sebuah proses. Perancangan UML : Unified Modeling Language (UML) adalah bahasa untuk spesifikasi, visualisasi, pembangunan dan dokumentasi sistem perangkat lunak sebaik pemodelan untuk bisnis dan sistem lain [2]. Pada perancangan UML, sistem didefinisikan sebagai sekumpulan objek yang memiliki atribut dan metode. Atribut adalah variabel-variabel yang melekat pada objek dan metode adalah fungsifungsi yang dapat dilakukan oleh objek. Kelas objek tidak dapat berdiri sendiri, dalam penggunaannya, dilakukan perwujudan (instantiasi) dari objek tersebut. Beberapa tahapan dalam pemodelan UML [3] :
Gambar 5. Tahapan dalam pemodelan UML Tahap awal 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. 4. PERBANDINGAN SYSTEMC DAN UML 4.1. SystemC Pada SystemC terdapat sebuah definisi makro kelas yaitu SC_MODULE. Modul terdiri dari beberapa bagian [5]: Port
3B
Variabel sinyal internal Variabel data internal Proses-proses dengan tipe yang berbeda Method-method Instantiasi modul lain Konstruktor
Setiap kelas dalam SystemC memiliki makro SC_CTOR yang merupakan konstruktor tanpa argumen yang digunakan dalam deklarasi SC_MODULE. Penggunaan konstruktor yang memiliki argumen dapat menggunakan SC_HAS_PROCESS. Pada konstruktor dapat didefinisikan SC_METHOD dan SC_THREAD. Dalam SC_MODULE terdapat definisi variabel dan fungsi-fungsi yang ada di dalamnya, SC_METHOD, SC_THREAD dan SC_CTHREAD. Ketiganya adalah fungsi yang terdapat dalam sebuah modul. Contoh berikut adalah modul fir yang memiliki atribut dan method didefinisikan dalam SystemC : SC_MODULE(fir) { sc_in_clk clk; sc_in
reset; sc_in in; sc_in in_data_valid; sc_out out; sc_out out_data_valid; ... sc_signal state_curr, state_nxt; ... SC_CTOR(fir) { SC_METHOD(fir); sensitive<<state_curr<
masing-masing dan malakukan proses secara bersamaan. Method yang dideklarasikan dalam SC_CTOR adalah method modul kelas fir. Pendefinisan rinci method-method tersebut dilakukan dalam bagian lain di dalam modul fir atau di luar modul. Channel dan Interface dalam SystemC Channel dalam SystemC menyediakan metode komunikasi antar proses atau modul SystemC menggunakan interface standar. Channel diimplementasikan sebagai sebuah modul. Channel primitif memiliki kelas dasar, sc_prim_channel.
proses-proses yang bisa dianggap sebagai method dari kelas modul tersebut. Signal dan variabel adalah atribut dari kelas yang lebih sederhana. Channel adalah kelas tersendiri yang merupakan turunan dari kelas modul dengan nama kelas sc_channel dan interface adalah kelas virtual.
KELAS : fir
SystemC memiliki beberapa channel primitif seperti : sc_mutex – mutual exclusion sc_semaphore – Semaphore sc_fifo – Antrian First-in first-out Channel juga dapat didefiniskan oleh pengguna secara langsung.
ATRIBUT : clk, reset, in, in_data_valid, out, out_data_valid, state_curr, state_nxt
Interface dalam SystemC adalah kelas yang bersifat virtual. Berikut ini program stack yang menggambarkan fungsi interface dalam systemC : #include "systemc.h" class stack_write_if: virtual public sc_interface { public: virtual bool nb_write(char) = 0; // write a character virtual void reset() = 0; // empty the stack }; class stack_read_if: virtual public sc_interface { public: virtual bool nb_read(char&) = 0; // read a character };
METHOD : fir() fsm() reg() Gambar 7. Kelas fir dalam UML Tabel berikut menunjukan perbandingan antara pemodelan SystemC dan UML.
Channel
Tabel 1. Perbandingan SystemC dan UML No SystemC UML Module Class “sc_module” 1 Channel Class “sc_channel” 2 Interface Class virtual 3 Port Atribut Class 4 Nama Port Nama Atribut 5 Tipe data Tipe Atribut 6 Process Method Class 8 Prinsip dasar kedua pemodelan menunjukan banyak kesamaan. Perbedaan terletak pada notasi dan rincian program.
MODUL PORT Interface
Proses
5. KESIMPULAN Kedua pemodelan, SystemC dan UML, memiliki kesamaan dalam domain permasalahan yang berorientasi objek. Dalam SystemC objek yang dimaksud adalah komponen. Dalam memodelkan keduanya memiliki kesamaan baik dalam pendefinisian kelas, atribut maupun method. 4B
Gambar 6. Modul, port, interface dan channel 4.2. UML Pada pemodelan UML, modul fir diatas dapat didefinisikan sebagai sebuah kelas Objek yang memiliki atribut dan method (gambar 7). Berdasarkan perbandingan antara SystemC dan UML kita memperoleh beberapa kenyataan sebagai berikut : Modul dalam systemC adalah sebuah Class yang terdiri dari atribut berupa port, nama port dan tipenya. Di dalam modul tersebut terdapat juga
6. DISKUSI Dalam memudahkan pemodelan level sistem dimungkinkan untuk dibuat suatu interface antara pemodelan UML dan SystemC sehingga dapat dibuat sebuah model untuk tranformasi dari UML ke dalam SystemC secara otomatis. 6B
7. PENGHARGAAN Terima kasih kepada departemen Teknik Informatika IT Telkom dan departemen Teknik Elektro STEI ITB atas dukungan finansial dan perangkat penelitian sehingga penelitian ini bisa diselesaikan. 5B
8. PUSTAKA [1] Abdurohman, Maman. Kuspriyanto. Sutikno, Sarwono. Sasongko, Arif. ”SystemC dan SystemVerilog : Studi Komparatif Bahasa Perancangan Level Sistem”. Proceeding. SATEK II. Universitas Negeri Lampung. 2008. [2] Object Management Group. “OMG Unified Modeling Language Specification”. www.omg.org. 2001. [3] Larman, Craig. “Applaying UML and Patterns”. Prentice Hall. 2002. [4] Genovese, Matt. ”A Quick-Start Guide for Learning SystemC”. The University of Texas. Austin. 2004. [5] Niemann, Bernhard. ”An Introduction to SystemC 1.0.x”. Institut Integrierte Schaltungen. Fraunhofer. 2001. 6B
RIWAYAT PENULIS Maman Abdurohman lahir di kota Majalengka pada 14 Maret 1975. Penulis menamatkan pendidikan S1 di Institut Teknologi Telkom dalam bidang teknik Informatika pada tahun 1998, S2 di ITB dalam bidang Teknologi Informasi pada tahun 2004 dan sedang mengambil program doctor di ITB dalam bidang perancangan embedded system. Saat ini bekerja sebagai dosen di Institut Teknologi Telkom.