• Tidak ada hasil yang ditemukan

BAB 5 VERIFIKASI DAN SINTESIS INVERSE-CABAC

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 5 VERIFIKASI DAN SINTESIS INVERSE-CABAC"

Copied!
14
0
0

Teks penuh

(1)

BAB 5

VERIFIKASI DAN SINTESIS INVERSE-CABAC

Setelah proses perancangan arsitektur Inverse-CABAC dan perancangan RTL dalam kode Verilog HDL selesai dilakukan, tahap berikutnya adalah memverifikasi dan sintesis rancangan. Proses verifikasi yang dijelaskan pada bagian ini adalah verifikasi fungsional rancangan RTL dan verifikasi netlist hasil proses sintesis.

5.1 Verifikasi Fungsional

Proses verifikasi fungsional dilakukan untuk memastikan bahwa desain telah bekerja sesuai dengan fungsi yang dispesifikasikan, dalam hal ini adalah test vector yang dihasilkan dari program acuan. Tujuan fungsional dari desain Inverse-CABAC adalah men-decode input bitstream sehingga menghasilkan kode-kode biner yang kemudian akan menjadi input inverse binerisasi. Verifikasi fungsional yang dilakukan terhadap desain Inverse-CABAC ini adalah dengan melakukan simulasi timing terhadap test vector yang berupa bitstream. Verifikasi fungsional dilakukan dengan mengunakan tool simulasi ModelSim SE 6.0 dari Mentor Graphic.

5.1.1 Metodologi Verifikasi

Untuk mendapatkan hasil verifikasi yang valid, maka diperlukan suatu metodologi verifikasi yang baik. Metode verifikasi rancangan Inverse-CABAC meliputi penentuan skema verifikasi, pembuatan test vector dari model referensi, serta perancangan testbench RTL.

(2)

DUT : Inverse CABAC Input Vector Output Vector Compare Stimulus Generator PASSED or FAILED RTL Testbench

Gambar 5.1 Skema Verifikasi Inverse CABAC

Pada proses verifikasi, test vector yang digunakan adalah data bitstream sebagai data input dan data bit yang di-decode sebagai data output. Test vector ini dihasilkan dari model referensi, yaitu JM 11.0, yang merupakan model standard untuk sistem H.264.

Untuk proses verifikasi desain RTL, maka diperlukan sebuah testbench RTL, yang berfungsi untuk menghasilkan sinyal stimulus. Testbench ini juga berfungsi untuk memberikan data input dan output berdasarkan timing yang telah ditentukan. Untuk validasi nilai output desain RTL dengan referensi output, pada perancangan ini, testbench dirancang memiliki fitur auto-compare.

Berikut adalah potongan RTL testbench:

/* --- */ /*Input Pattern Generation */ /* --- */ wire[9:0]input_count=

CabacDec.buff_stream.buff_stream_ctrl.RAM_addr; reg load_bitstream;

always @(posedge clock) if (start_dec)

load_bitstream <= #1 1'b1; else if

(3)

load_bitstream <= #1 1'b0;

always @(input_count or load_bitstream) if (load_bitstream)

bitstream_in = #1 bitstream_buff[input_count]; else

bitstream_in = #1 1'bx;

/* ---*/ /* Reference Output Generation */

/* ---*/ Wire dec_bitout_en = CabacDec.arcod.arcod_ctrl.mux_dataout_en | CabacDec.bypass.bypass_output_en; Wire [9:0] output_count = CabacDec.init_cntx.init_cntx_ctrl.ROM_idx_addr; reg ref_dec_bitout;

always @ (posedge clock) if (dec_bitout_en)

ref_dec_bitout <= #1 dec_bin_buff [output_count-1]; else

ref_dec_bitout <= #1 ref_dec_bitout;

/* --- */ /* Comparing Actual Output with Reference Output */

/* --- */

wire output_state_valid = CabacDec.arcod.arcod_ctrl.arcod_done | CabacDec.bypass.bypass_done;

wire decout_bit = CabacDec.dec_bitout;

always @ (posedge clock) if (output_state_valid)

if (decout_bit != ref_dec_bitout) begin

$display ("!!!ERROR at data [%3d] : Actual decout_bit = %1b, Expected decout_bit = %1b",

output_count-1, decout_bit, ref_dec_bitout); error = error + 1;

end else begin

$display ("TEST PASSED : decout_bit [%3d] = %1b", output_count-1, decout_bit); error = error;

(4)

5.1.2 Hasil Verifikasi

Sebelum dilakukan verifikasi desain yang terintegrasi, maka dilakukan verifikasi desain pada sub modul desain Inverse-CABAC terlebih dahulu. Verifikasi secara modular dilakukan untuk memastikan fungsionalitas modul-modul yang akan diintegrasikan. Verifikasi pada tingkat modul, dilakukan dengan menganalisis timing diagram setiap data dan sinyal-sinyal kontrol. Dengan dilakukan verifikasi secara modular terlebih dahulu, diharapkan tingkat kesulitan proses debugging pada top level dapat dikurangi.

Hasil verifikasi dari setiap sub modul desain Inverse-CABAC adalah sebagai berikut.

5.1.2.1Buffer Stream

Gambar 5.2 menunjukkan bahwa state buffer stream akan berpindah dari state IDLE (pstate = 0) ke state WRITE_STREAM (pstate = 1), yaitu saat sinyal start_buff bernilai “1”. Dengan demikian proses pada modul buffer stream dapat mulai dilakukan, yaitu penulisan nilai bit stream ke RAM.

Gambar 5.2 Simulasi Transisi State IDLE ke State WRITE_STREAM

Proses penulisan bitstream dilakukan secara berurutan sebanyak 664 kali, sesuai dengan jumlah bitstream yang dibutuhkan pada perancangan Inverse-CABAC. Setelah nilai counter (count_664) mencapai nilai maksimum, yaitu 663, maka state buffer stream berpindah dari state WRITE_STREAM ke state

(5)

READ_INIT (pstate = 2). Nilai maksimum counter ditunjukkan dengan sinyal status end_count bernilai “1”. Proses pada state WRITE_STREAM ditunjukkan pada gambar 5.3.

Gambar 5.3 Simulasi Transisi State WRITE_STREAM ke State READ_INIT

Setelah penulisan bitstream dilakukan, proses berikutnya adalah pembentukan nilai awal offset, yang digunakan untuk proses binary decoding. Proses pembentukan nilai offset dilakukan dengan membaca 9 data pertama dari initRAM.

Gambar 5.4 Simulasi Transisi State READ_INIT ke State READ_STREAM

Data yang dibaca dari initRAM kemudian masuk ke rangkaian shift register. Proses shifting dilakukan selama sinyal shift_enable bernilai “1”, yaitu selama 9 clock cycle. Nilai offset yang terbentuk (initstream_out) valid ditunjukkan dengan sinyal init_streamready bernilai “1”. Dari gambar 5.5 terlihat nilai awal

(6)

offset yang dihasilkan adalah 0x1b0, sesuai dengan nilai awal offset dalam test vector.

Gambar 5.5 Hasil Simulasi Shift Register untuk Membentuk Nilai Offset Awal

Setelah pembentukan nilai awal offset, proses berikutnya pembacaan bitstream untuk proses binary decoding. Proses transisi dari state READ_INIT ke state READ_STREAM ini dapat dilihat ada gambar 5.4. Pembacaan bitstream dilakukan jika pada proses decoding diperlukan proses renormalisasi, atau proses decoding berlangsung pada mode bypass. Proses renormalisasi ditunjukkan dengan sinyal renorm bernilai “1”, sedangkan proses decoding pada mode normal ditunjukkan dengan sinyal bypass_enable bernilai “1”. Karena jumlah bitstream pada setiap proses decoding mode bypass hanya 1 bit, maka sinyal kontrol untuk pembacaan RAM, RAM_ce, hanya diambil dari 1 clock cycle pertama sinyal bypass_enable. Hasil simulasi pembacaan bitstream ini dapat dilihat pada gambar berikut:

(7)

5.1.2.2Init Context

Gambar 5.7 menunjukkan bahwa proses pada Init Context dimulai setelah sinyal start_context aktif. Saat sinyal start_context bernilai “1”, state Init Context berpindah dari state IDLE (pstate = 0) ke state WRITE_INIT (pstate = 1). Pada state WRITE_INIT, dilakukan penulisan nilai context model (ste_mps) ke RAM context. Nilai RAM context merupakan hasil perhitungan block Init Context Core. Proses penghitungan setiap nilai context model dilakukan dalam 5 clock cycle, yaitu dari nilai initcntx_stepcount 0 sampai 4. Penulisan nilai context model dilakukan saat initcntxt_stepcount bernilai 4, yang ditunjukkan dengan sinyal kontrol RAM_we bernilai “1”.

Gambar 5.7 Hasil Simulasi Modul Init Context

5.1.2.3Arcod

Gambar 5.8 menunjukkan proses binary decoding pada mode normal. Proses decoding dilakukan saat sinyal arcod_enable bernilai “1”. Proses decoding diawali dengan proses update nilai offset dan range, yang dilakukan selama 4 clock cycle. Dari proses update ini didapatkan juga nilai status offs_high_valid. Pada clock kelima, yaitu saat state RANGE_CHECK, dilakukan proses pengecekan nilai range. Jika nilai range lebih kecil dari 0x100, maka status range_low_valid bernilai “1”. Dari nilai status offset dan range ini, maka dapat diputuskan apakah proses renormalisasi harus dilakukan atau tidak. Jika kedua

(8)

sinyal status, offs_high_valid dan range_low_valid bernilai “1” maka proses renormalisasi dilakukan. Proses renormalisasi dilakukan pada state RENORM (pstate = 6). Proses binary decoding dilakukan dalam 6 clock cycle, untuk proses tanpa renormalisasi, atau dalam (6 + 2n) clock cycle jika proses decoding membutuhkan renormalisasi. Setiap proses renormalisasi membutuhkan 2 buah clock cycle, yaitu masing-masing untuk proses penghitungan nilai renormalisasi offset dan range dan pengecekan kembali nilai range.

Binary Decoding State

Decoding tanpa renormalisasi

Decoding dengan renormalisasi

Gambar 5.8 Hasil Simulasi Modul Arcod

5.1.2.4Bypass

Gambar 5.9 menunjukkan proses binary decoding pada mode bypass. Setiap proses decoding pada mode bypass dilakukan dalam 2 clock cycle. Clock cycle pertama untuk proses update nilai range dan offset, sedangkan clock cycle kedua untuk validasi data. Dengan validasi ini, data dapat ditulis di register offset dan range.

(9)

Gambar 5.9 Hasil Simulasi Modul Bypass

5.1.2.5Register Offset dan Range

Tahap terakhir dari proses Inverse-CABAC adalah penulisan nilai akhir offset dan range yang dihasilkan dari setiap proses binary decoding. Proses penulisan dapat dilakukan saat sinyal kontrol offs_range_we bernilai “1”. Sinyal kontrol ini dihasilkan saat sinyal status arcod_done atau bypass_done bernilai “1”. Sinyal status ini juga digunakan sebagai sinyal kontrol untuk pemilihan data offset dan range yang harus ditulis ke register. Berikut adalah hasil simulasi pada modul register offset dan range.

(10)

5.1.2.6Top Level Inverse-CABAC

Verifikasi rancangan Inverse-CABAC yang telah terintegrasi dilakukan dengan membandingkan test vector acuan dengan output Inverse-CABAC. Proses verifikasi pada top level dilakukan dengan berbasis auto-compare. Dengan menggunakan metode verifikasi ini tingkat kesulitan verifikasi dan waktu yang dibutuhkan untuk verifikasi dapat dikurangi. Hasil simulasi ditunjukkan pada gambar 5.11.

Gambar 5.11 Hasil Simulasi Rancangan Inverse-CABAC

(11)

5.2 Implementasi

Setelah desain telah diverifikasi secara fungsional, tahap perancangan berikutnya adalah implementasi desain pada FPGA. Proses implementasi dilakukan dengan menggunakan EDA tools ISE Xilinx 9.1i pada target devais Virtex-4 XC4VSX35-10F668.

Tahap pertama proses implementasi adalah sintesis desain. Pada tahap sintesis, desain dalam bentuk kode HDL dipetakan menjadi interkoneksi gerbang logika (netlist) berdasarkan target devais yang telah ditentukan. Dari proses sintesis didapatkan performa rancangan berupa Device Utilization Summary dan Timing Summary. Report sintesis menunjukkan bahwa rancangan Inverse CABAC memerlukan 7% slice area FPGA dengan frekuensi kerja maksimum 118.68 MHz.

Device utilization summary: ---

Selected Device : 4vsx35ff668-11

Number of Slices: 1122 out of 15360 7% Number of Slice Flip Flops: 267 out of 30720 0% Number of 4 input LUTs: 2141 out of 30720 6% Number of IOs: 29

Number of bonded IOBs: 29 out of 448 6% Number of FIFO16/RAMB16s: 4 out of 192 2% Number used as RAMB16s: 4

Number of GCLKs: 1 out of 32 3% Number of DSP48s: 1 out of 192 0% Timing Summary:

--- Speed Grade: -11

Minimum period: 8.426ns (Maximum Frequency: 118.680MHz) Minimum input arrival time before clock: 3.815ns

Maximum output required time after clock: 11.014ns Maximum combinational path delay: No path found

Tahap selanjutnya adalah proses Translate. Pada tahap ini, netlist hasil proses sintesis diidentifikasi dan diaplikasikan dalam top level rancangan. Dari proses Translate dihasilkan netlist dalam format NGD (Native Generic Design). Pada tahap ini seluruh constraint diaplikasikan pada netlist. Setlah itu dilakukan proses Map, yaitu proses optimasi gerbang logika dan jalur interkoneksi yang tidak

(12)

terpakai dan memetakan rancangan ke resource FPGA. Pada tahap Map, dilakukan juga pemeriksaan design-rule pada target devais serta memetakan elemen-elemen dasar menjadi Configurable Logic Block (CLB).

Design Summary --- Design Summary: Number of errors: 0 Number of warnings: 1 Logic Utilization:

Number of Slice Flip Flops: 265 out of 30,720 1% Number of 4 input LUTs: 2,125 out of 30,720 6% Logic Distribution:

Number of occupied Slices: 1,182 out of 15,360 7%

Number of Slices containing only related logic: 1,182 out of 1,182 100%

Number of Slices containing unrelated logic: 0 out of 1,182 0%

*See NOTES below for an explanation of the effects of unrelated logic

Total Number of 4 input LUTs: 2,138 out of 30,720 6% Number used as logic: 2,125

Number used as a route-thru: 13

Number of bonded IOBs: 29 out of 448 6% Number of BUFG/BUFGCTRLs: 1 out of 32 3% Number used as BUFGs: 1

Number used as BUFGCTRLs: 0

Number of FIFO16/RAMB16s: 4 out of 192 2% Number used as FIFO16s: 0

Number used as RAMB16s: 4

Number of DSP48s: 1 out of 192 1% Total equivalent gate count for design: 278,749

Additional JTAG gate count for IOBs: 1,392

Proses terakhir adalah PAR (Place and Route). Place merupakan proses peletakan blok logika termasuk struktur CLB dan IOB pada tempat tertentu pada arsitektur devais target. Routing adalah proses memberikan pin-pin pada blok-blok logika.

5.3 Verifikasi Netlist Hasil PAR

Untuk memastikan rancangan hasil proses PAR masih memiliki kesamaan fungsional dengan rancangan RTL sebelum sintesis, maka dilakukan simulasi ulang. Simulasi dilakukan pada netlist, yang dihasilkan dari tahap PAR. Dari tahap ini, juga dihasilkan file Standard Delay Format (SDF), yang berisi

(13)

parameter timing dari setiap logic block yang terpakai oleh desain Inverse CABAC. Selain netlist dan SDF files, untuk simulasi pada level gate dibutuhkan juga komponen SIMPRIMS library. Proses simulasi dilakukan dengan menggunakan RTL testbench yang juga digunakan pada simulasi RTL. Hasil simulasi netlist setelah PAR menunjukkan rancangan masih memiliki fungsional yang sama.

(14)

5.4 Analisis Kinerja Inverse-CABAC

Dari proses sintesis, diperoleh bahwa rancangan Inverse-CABAC berhasil diimplementasikan dengan total equivalent gate count 278749 gate, dengan frekuensi kerja maksimum sebesar 118 MHz. Untuk frekuensi kerja sistem sebesar 100 MHz, maka rancangan Inverse CABAC memiliki throughput sebesar 10,43 Mbps. Nilai throughput diperoleh dari perhitungan sebagai berikut :

Jumlah bit yang di- x frekuensi kerja Total clock cycle

791 x 100 M 7580 10, 44 Mbps decode Throughput= = =

Gambar

Gambar 5.1 Skema Verifikasi Inverse CABAC
Gambar 5.2 menunjukkan bahwa state buffer stream akan berpindah dari state  IDLE (pstate = 0)  ke state WRITE_STREAM (pstate = 1), yaitu saat sinyal  start_buff bernilai “1”
Gambar 5.4 Simulasi Transisi State READ_INIT ke State READ_STREAM
Gambar 5.5 Hasil Simulasi Shift Register untuk Membentuk Nilai  Offset Awal
+6

Referensi

Dokumen terkait

“Keputusan tidak berlaku surut terhadap (1) Anak-anak yang dilahirkan dari perkawinan tersebut; (2) Suami atau isteri yang bertindak dengan iktikad baik, kecuali terhadap

Communication: Behavioral Perspective , (New York: Holt Rinehart and Winstons, 1981), p.. membawa konsekwensi terjalinnya interaksi seluruh komponen yang ada dalam sistem

Jumlah anchor bolt harus 4 atau kelipatannya untuk setiap vertikal vessel, pada vessel yang tinggi sebaiknya menggunakan 8 buah anchor bolt atau tergantung. Vg

~askah skripsi berjudul Penambahan W71ev Protein Susu pada Sari Buah Sirsak : KaHan Pengaruh pH Awal dan Suhu Pemanasan terhadap Sifat Fisikokimia dan

Tenaga kesehatan dalam melakukan tugasnya berkewajiban untuk mematuhi standar profesi dan menghormati hak pasien.. Kepmenkes. Kepmenkes No. 1239/2001 Psl Psl 16

Pada pengujian didapatkan untuk kontrol On/Off motor bergerak dengan kecepatan tetap untuk setiap sudut set yang diberikan sedangkan pada kontrol logika fuzzy motor

Hasil penelitian ini menunjukan bahwa: 1 Pelaksanaan ekstrakurikuler memanah di SD Muhammadiyah 01 Malang dapat mencapai target dengan adanya tujuan, perencanaan, pelaksanaan

Kemudian jika membandingkan tingkat kete- rampilan sosial antara mahasiswa Jurusan BK FIP UNJ angkatan 2011 reguler dengan non reguler, diperoleh hasil sebagai berikut: