SYSTEMC DAN UML : PERANCANGAN BERORIENTASI OBJEK
STUDI KOMPARATIF
Maman Abdurohman1), Kuspriyanto2) Sarwono Sutikno3) Arif Sasongko4)
1Teknik Informatika, IT Telkom, Jln. Telekomunikasi No.1 Bandung 2STEI ITB, Jln. Ganesha 10 Bandung
Telp : (022) 7565931, Fax : (022) 7565931 E-mail : HHUmma@ittelkom.ac.idUHH
1) H , Ukuspriyanto@yahoo.comU 2) , ssarwono@ieee.org UHH 3) asasongko@stei.itb.ac.id 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
0B0B
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.
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.
1B1B
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.
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.
Perancangan perangkat keras yang saat ini dilakukan terdiri dari beberapa tahapan dimulai dari pemodelan aplikasi sampai implementasi (gambar 2). Pemodelan (C, C++) Analisis Hasil Perbaikan Konversi Manual Simulasi Sintesis ……. VHDL/Verilog
Gambar 2. Tahap pemodelan perangkat keras Rancangan embedded system pada tahap awal dimodelkan dengan menggunakan bahasa C, C++ atau mathlab. Spesifikasi ini kemudian dianalisis
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.
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 Analisis Hasil Perbaikan Simulasi Sintesis ……. Gambar 3. Perancangan SystemC
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.
2B2B
3. UML (UNIFIED MODELING LANGUAGE)
12
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.
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. Komponen-kompnen perancangan terstruktur
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 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 [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.
3B3B
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
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<bool> reset; sc_in<T_DATA> in; sc_in<bool> in_data_valid; sc_out<T_DATA> out; sc_out<bool> out_data_valid; ...
sc_signal<T_STATE> state_curr, state_nxt; ... SC_CTOR(fir) { SC_METHOD(fir); sensitive<<state_curr<<in; SC_METHOD(fsm); sensitive<<state_curr<<data_valid; SC_METHOD(reg); sensitive_pos<<clk; sensitive<<reset; ... } }
Pada contoh diatas didefinisikan sebuah modul yang diberi nama ”fir”. Modul ini dalam perancangan perangkat keras dianggap sebagai suatu komponen yang memiliki beberapa port. Port yang dimaksud seperti clk, reset, in, in_data_valid dll. Port tersebut menghubungkan antara komponen ”fir” dengan lingkungan luar. Masing-masing port memiliki tipe port dan arahnya. Contoh clk bertipe sc_in_clk artinya port clk adalah port yang menuju ke dalam komponen dari luar.
Pada bagian konstruktor (SC_CTOR) terdapat definisi beberapa method yaitu fir, fsm dan reg. Ketiga method tersebut memiliki daftar input
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. SystemC memiliki beberapa channel primitif seperti :
sc_mutex – mutual exclusion
sc_semaphore – Semaphore
sc_fifo<type> – Antrian First-in first-out Channel juga dapat didefiniskan oleh pengguna secara langsung.
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 }; Proses MODUL PORT Channel Interface
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
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
ATRIBUT :
clk, reset, in,
in_data_valid, out,
out_data_valid,
state_curr, state_nxt
METHOD :
fir()
fsm()
reg()
Gambar 7. Kelas fir dalam UML
Tabel berikut menunjukan perbandingan antara pemodelan SystemC dan UML.
Tabel 1. Perbandingan SystemC dan UML
No SystemC UML
1 Module Class “sc_module”
2 Channel Class “sc_channel”
3 Interface Class virtual
4 Port Atribut Class
5 Nama Port Nama Atribut
6 Tipe data Tipe Atribut
8 Process Method Class
Prinsip dasar kedua pemodelan menunjukan banyak kesamaan. Perbedaan terletak pada notasi dan rincian program.
4B4B
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.
6B6B
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.
5B5B
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.
6B6B
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.
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.