paper dsp machine menggunakan systemc · 1 pendahuluan pada saat paper ini ... tujuan dari desain...
TRANSCRIPT
TRANSFORMASI WAVELET DAUBECHIES
DENGAN MENGGUNAKAN SYSTEMC AWAL DARI DSP ENGINE
Akhmad Mulyanto
23203097
Abstrak. Desain VLSI DSP dalam VHDL mempunyai kendala nilai floating point yang tidak friendly, mengakibatkan proses debug sulit dan lama. SystemC menawarkan solusi atas masalah ini dan juga mempunyai kemampuan untuk melakukan test numeric dalam usaha memenuhi suatu standard. Desain sistem pada level RTL dengan SystemC juga menghasilkan “VHDL RTL design look like”, sehingga desain dalam System dan desain dalam VHDL mudah saling dikonversikan. Transformasi Wavelet menawarkan kinerja yang tinggi dalam kompresi baik dalam ratio kompresi maupun dalam kecepatan kompresinya.
1 Pendahuluan
Pada saat paper ini dibuat, DSP Engine dengan kemampuan Wavelet Transform, DCT Transform, Motion Estimator, dan Image Processing belum menjadi tujuan utama dari desain. Tujuan dari desain adalah membuat platform DSP engine dengan salah satu fungsinya adalah Wavelet Transform. Fungsi-fungsi dan algoritma-algoritma lainnya dapat ditambahkan dan dikembangkan dikemudian hari. Fitur dari fungsi Wavelet Transform pun masih terbatas pada satu dimensi panjang filter sama dengan 4 (Daubechies 4). Idealnya suatu Wavelet Transform pada DSP Engine mempunyai parameter dimensi dan panjang filter yang proggrammable. 2 Kecepatan Transformasi Wavelet Daubechies Empat Wavelet transform menawarkan kecepatan komputasi yang menarik. Untuk mentransformasikan n data, hanya diperlukan n akses ke n alamat memory. Selama proses pembacaan data, secara simultan data yang telah dibaca ditransformasikan. Sehingga hanya dibutuhkan n + m latency clock untuk menyelesaikan proses transformasi. Perhitungan komputasi lebih lanjut untuk melaksanakan suatu wavelet transform untuk suatu filter dengan panjang L dan suatu sinyal dengan panjang N=2k adalah sebagai berikut:
Pada tingkat pertama, seluruh N data dilewatkan pada filter bank pertama. Pada tingkat kedua, separuh N data hasil filter bank pertama dilewatkan pada
filter bank kedua. Pada tingkat berikutnya, seperempat N data hasil filter bank kedua dilewatkan
pada filter bank berikutnya.
)1...21
21()...
22(cos
2log NNL
NNNNLt Npasslow
Kalkulasi untuk filter high pass adalah sama, sehingga :
LNNLNL
NLNL
NLt
ttt
k
k
k
M
k
m
k
passhighpasslow
22112
211
211
121
121
21
)2
1...21
211(cos
coscoscos
1
0
1
Untuk L = 4 dan N = 8 dapat diharapkan selesai kurang dari 64 clock. Untuk L = 4 dan N = 64 dapat diharapkan selesai kurang dari 512 clock Yang menarik adalah dengan membuat masing-masing filter bank terpisah dan suatu arsitektur yang effisien maka 8 x 8 data bahkan bisa diselesaikan dalam 64 clock + n clock seperti pada gambar 1 berikut :
STA MULTACC FILTER BANK 1
STA MULTACCFILTER BANK 2
STO
STO
STA MULTACCFILTER BANK 3 STO
STA MULTACC FILTER BANK 1
STA MULTACCFILTER BANK 2
STO
STO
STAMULTACC
FILTER BANK 3STO
8 CLOCK 4 CLOCK 4 CLOCK
Gambar 1. Diagram Timing Untuk Hardware Control Daubechies 4 Implementasi yang sudah dilakukan adalah seperti pada gambar 2. Dengan L = 4 dan N = 64, menghasilkan 8 data hasil pertama pada clock ke 42 dan 8 data hasil terakhir pada clock 120. Dapat disimpulkan nilai latency clock adalah 32. Memory data diakses dalam 8 clock pada 8 clock terakhir fasa EXECUTE, membuat memory available selama 3 clock berturut-turut pada fasa FETCH, DECODE dan EXECUTE clock pertama. Sehingga pada saat itu memory dapat digunakan untuk proses lain dengan suatu sistem perwasitan bus. Misalkan arsitektur didesain untuk dapat meload 64 data secara berurutan dalam 64 clock maka dapat diperkirakan waktu komputasi 64 data adalah 3 + 64 + 32 = 99 clock jauh lebih cepat dari DCT transform untuk 64 bit yang diperkirakan mempunyai
waktu komputasi tercepat 3 + 64 + 64 = 131 clock. Apalagi bila setiap filter bank pada transformasi wavelet daubechies menggunakan parallel multiplier, maka waktu komputasinya (estimasi) menjadi 3 + 64 + 15 = 82 clock!.
FEC
STA MULTACC FILTER BANK 1
STAMULTACC
FILTER BANK 2 STO
STO
STAMULTACC
FILTER BANK 3STO
DEC EXE
STA MULTACC FILTER BANK 1
STA MULTACCFILTER BANK 2
STO
STO
STAMULTACC
FILTER BANK 3STO
FEC DEC EXE
9 CLOCK 4 CLOCK 4 CLOCK
Gambar 2. Diagram Timing Untuk Software Control Daubechies 4 3. Transformasi Wavelet Daubechies Empat Transformasi wavelet Daubechies Empat menggunakan FIR empat tap dengan koefisien ternormalisasi :
22551260-0.12940952431]3[
80420130.224143862433]2[
37378080.836516302433]1[
31445340.482962912431]0[
c
c
c
c
sebagai low pass filter (LPF) dan FIR empat tap dengan koefisien ternormalisasi:
31445340.482962912431]0[]3[
37378080.836516302433]1[]2[
80420130.224143862433]2[]1[
22551260-0.12940952431]3[]0[
cd
cd
cd
cd
sebagai suatu high pass filter (HPF) untuk menguraikan sinyal. Kombinasi LPF dan HPF inilah yang disebut filter bank. Komputasi dalam filter bank pertama untuk input data f0 ={ f(0),f(1),f(2), f(3),f(4),f(5),f(6),f(7)}=(2,5,8,9,7,4,-1,1) adalah:
)7()3()6()2()5()1()4()0()5()3()4()2()3()1()2()0()3()3()2()2()1()1()0()0()1()3()0()2()7()1()6()0(
)7()3()6()2()5()1()4()0()5()3()4()2()3()1()2()0()3()3()2()2()1()1()0()0()1()3()0()2()7()1()6()0(
1
fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
f
= (0.155, 5.78, 12.4, 6.37, -0.837, 0.966, 0.871, -3.12) Output f1 selanjutnya menjadi input filter bank kedua. Komputasi dalam filter bank kedua untuk input data f1 ={ f1(0),f1(1),f1(2), f1(3),f1(4),f1(5),f1(6),f1(7)}= (0.155, 5.78, 12.4, 6.37, -0.837, 0.966, 0.871, -3.12) adalah:
)7()6()5()4(
)3()3()2()2()1()1()0()0()1()3()0()2()3()1()2()0(
)3()3()2()2()1()1()0()0()1()3()0()2()3()1()2()0(
1
1
1
1
111
1111
1111
1111
2
ffff
fdfdfdfdfdfdfdfd
fcfcfcfcfcfcfcfc
f
= (10.6, 6.87, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12) Output f2 selanjutnya menjadi input filter bank ketiga. Komputasi dalam filter bank ketiga untuk input data f2 ={ f1(0),f1(1),f1(2), f1(3),f1(4),f1(5),f1(6),f1(7)}= (10.6, 6.87, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12) adalah:
)7()6()5()4()3()2(
)3()3()2()2()1()1()0()0()1()3()0()2()1()1()0()0(
2
2
2
2
2
2
2222
2222
3
ffffff
fdfdfdfdfcfcfcfc
f
= (12.4, 2.66, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12)
4. Implementasi Transformasi Wavelet Daubechies Empat Diagram flowchart dari filter bank pertama dari Transformasi wavelet Daubechies Empat dengan menggunakan 8 multiplier dan 8 accumulator, dapat digambarkan pada gambar 3 sebagai berikut:
STARTi=0
LOADDATA
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
i=0
STOREdatatemp 0
i=1 i=2 i=3 i=4 i=5 i=6 i=7
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]
MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]
MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]
MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
STOREdatatemp 1
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
i=8 i=9
i=9?
i++
STOP
Gambar 3. Filter Bank Pertama Dengan Sebuah Proses Tunggal Diperlukan minimal 10 clock untuk menyelesaikan proses komputasi. Ditambah dengan 2 clock sinkronisasi maka dibutuhkan 12 clock. Hal ini tentu saja tidak memenuhi spesifikasi desain pada gambar 2. Untuk itu dibuat perubahan seperti pada gambar 4. Pada gambar 4, filter bank dibagi dalam dua proses sekuensial. Proses pertama memerlukan 8 clock untuk menyelesaikan prosesnya. Setelah proses pertama selesai, kerja filter bank dilanjutkan oleh proses kedua. Sementara proses pertama kembali pada posisi tunggu siap untuk melakukan filter pada 8 data berikutnya. Harga yang harus dibayar adalah penambahan sebuah state machine, empat multiplier dan sebuah accumulator.
START
i=0
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
i=1
STOREdatatemp 0
i=2 i=3 i=4 i=5 i=6
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]
MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]
MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]
STOREdatatemp 1
i=7?
STOP
i=7
j=1
MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[3] REG[4]MULTACC LPF[3] REG[4]MULTACC HPF[0] REG[5]MULTACC LPF[0] REG[5]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
j=2 j=3
j++
i=3?
i++LOAD DATA
Gambar 4. Filter Bank Pertama Dengan Sebuah Dua Proses Sekuensial
Diagram flowchart dari filter bank kedua dari Transformasi wavelet Daubechies Empat dengan menggunakan 4 multiplier dan 4 accumulator, dapat digambarkan pada gambar 5 sebagai berikut:
STARTi=0
i++LOAD DATA
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
i=1
STOREdatatemp 0
i=2 i=3 i=4 i=5 i=6
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
STOREdatatemp 1
i=6?
i++
STOP
Gambar 5. Filter Bank Kedua Dengan Sebuah Proses Sekuensial Sesuai dengan gambar 2, maka fungsi filter bank kedua dan fungsi filter bank ketiga dapat dilaksanakan oleh filter bank yang sama. Hasilnya adalah arsitektur yang lebih effisien.
Diagram flowchart dari filter bank ketiga dari Transformasi wavelet Daubechies Empat dengan menggunakan 2 multiplier dan 2 accumulator, dapat digambarkan pada gambar 6 sebagai berikut:
STARTi=0
i++LOAD DATA
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
i=1
STOREdatatemp 0
i=2 i=3 i=4
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]
STOREdatatemp 1
i=4? STOP
Gambar 6. Filter Bank Ketiga Dengan Sebuah Proses Sekuensial
5. Arsitektur DSP Engine Dengan Fitur Transformasi Wavelet Daubechies Empat Walau tujuan utama dari desain adalah hanya membuat transformasi wavelet Daubechies empat, terdapat banyak aspek yang memaksa pembuatan platform DSP Engine terlebih dahulu. Aspek-aspek tersebut adalah:
1. Performance, berkaitan dengan jumlah cycle/clock. 2. I/O interface, berkaitan dengan bagaimana data input dibaca dan data output
ditulis. 3. Sinkronisasi sistem, berkaitan dengan timing kerja.
Sehingga dirancanglah platform DSP Engine. DSP Engine mempunyai arsitektur microprocessor dengan software code-nya berfungsi untuk mengatur kerja dari DSP Engine keseluruhan. Instruction untuk melaksanakan wavelet 64 data pada memory data yang dimulai dengan address 0 didefinisikan sebagai berikut: prog[1] = 0x05080001; /* WAVEA */ prog[2] = 0x05080002; /* WAVEB */ prog[3] = 0x05080001; /* WAVEA */ prog[4] = 0x05080002; /* WAVEB */ prog[5] = 0x05080001; /* WAVEA */ prog[6] = 0x05080002; /* WAVEB */ prog[7] = 0x05080001; /* WAVEA */ prog[8] = 0x05080002; /* WAVEB */
OPCODE NUM DATA ADDRESS REGISTER NAMA NILAI BIT NAMA BIT NAMA BIT BIT WAVE 5 16 - 8 - 12 ACCA,
ACCB 4
Instruction 0x05080001 menyatakan “Lakukan wavelet transform dari 8 data dimulai pada memory dengan offset alamat = 0 dan simpan data dari memory pada register A”. Instruction 0x05080002 menyatakan “Lakukan wavelet transform dari 8 data dimulai pada memory dengan offset alamat = 0 dan simpan data dari memory pada register B”. Dua perintah WAVE yang berurutan tidak bisa menyimpan hasilnya pada register yang sama, karena setelah suatu register menyimpan data yang diload dari memory, register itu dipergunakan sebagai source data untuk filter bank 1. Arsitektur DSP Engine dengan fitur Wavelet Transform diperlihatkan pada gambar 7. Arsitektur ini bisa dikembangkan menjadi arsitektur DSP Engine dengan fitur Wavelet Transform, DCT Transform, dan Motion Estimator seperti pada gambar 8.
PC
CONTROL
REG A
REG B
AGU
MUX
FILTER BANK 1
MEMBUFFER
SRAM 2
4
5
1
2
6
8
9
SRAM1REG
CHAINB
ROMINSTRUCTION
3
10
11
12
13
14
1516
18 19
20
21
22
25
23 24
27 28
31 32
26
30
29
33
DECODER
ALU
FILTER BANK 2
FILTER BANK 3
MEMBUFFER
7
Gambar 7. Arsitektur DSP Engine dengan fitur Wavelet Transform
PC
CONTROL
REG A
REG B
AGU
4
5
1
2
6
8
9
SRAM1REG
CHAINB
ROMINSTRUCTION
3
10
11
12
13
14
18 19
20
21
DECODER
ALU
7
WAVELETCORE
DCTCORE
MECORE
SRAM 2 SRAM 3 SRAM 4
Gambar 8. Arsitektur DSP Engine dengan fitur Wavelet Transform, DCT Transform, dan
Motion Estimator
Arsitektur Fast Wavelet Core Desain Fast Wavelet Core dicapai dengan pembagian state machine dan timing. State machine dan timing dari Filter Bank Pertama :
0 1 2 3 4 5 6
0 1 2 3
0 1 2 3 4 5 6
2 3 4 5
0 1 2 3 4 5 6
4 5 6 7
0 1 2 3 4 5 6
0 1 6 7
STO
STO
STO
STO
CLRWAIT
CLRWAIT
CLRWAIT
CLRWAIT
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6
0 1 2 3
0 1 2 3 4 5 6
2 3 4 5
0 1 2 3 4 5 6
4 5 6 7
0 1 2 3 4 5 6
0 1 6 7
STO
STO
STO
STO
CLRWAIT
CLRWAIT
CLRWAIT
CLRWAIT
0 1 2 3 4 5 6 7ADDRESS
FSM 0
PROSES
FSM 1
PROSES
FSM 2
PROSES
FSM 3
PROSES
Gambar 9. Diagram Timing Untuk Filter Bank Pertama
0 1 2 3 4 5 6
0 1 2 3
0 1 2 3 4 5 6
2 3 4 5
STO
STO
CLRWAIT
CLRWAIT
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6
0 1 2 3
0 1 2 3 4 5 6
2 3 4 5
STO
STO
CLRWAIT
CLRWAIT
0 1 2 3 4 5 6 7ADDRESS
FSM 0
PROSES
FSM 1
PROSES
Gambar 10. Diagram Timing Untuk Filter Bank Kedua
0 1 2 3 4 5 6
0 1 2 3 STOCLRWAIT
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6
0 1 2 3 STOCLRWAIT
0 1 2 3 4 5 6 7ADDRESS
FSM 0
PROSES
Gambar 11. Diagram Timing Untuk Filter Bank Ketiga
Dari gambar 9-11 nampak bahwa arsitektur tiap Filter Bank dapat memfilter data 8 bit yang data berurutan.
FILTER BANK 1
MEMBUFFER
FILTER BANK 2
FILTER BANK 3
MEMBUFFER
MEMORYOUTPUTBUFFER
start a
start b
start c
valid
data
data a
data b
data c
ADDRESSGENERATOR
address
data result
address a
address b
FILEDATA
TESTBENCHSTIMULUS
DISPLAY
address
WAVELETCORE
FILE
Gambar 12. Arsitektur Wavelet Core dan Test Bench
01
23
45
6
01
23
01
23
45
6
23
45
01
23
45
6
45
67
01
23
45
6
01
67
STO
STO
STO
STO
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
01
23
45
67
01
23
45
6
01
23
01
23
45
6
23
45
01
23
45
6
45
67
01
23
45
6
01
67
STO
STO
STO
STO
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
89
1011
1213
1415
CLO
CK
FSM
0a
PR
OS
ES
FSM
1a
PR
OS
ES
FSM
2a
PR
OS
ES
FSM
3a
PR
OS
ES
01
23
45
6
01
23
01
23
45
6
23
45
01
23
45
6
01
67
STO
STO
STO
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
01
23
45
6
01
23
01
23
45
6
23
45
01
23
45
6
01
67
STO
STO
STO
CLR
WA
IT
CLR
WA
IT
CLR
WA
IT
FSM
0b
PR
OS
ES
FSM
1b
PR
OS
ES
FSM
c
PR
OS
ES
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
36
Gambar 13. Timing Diagram Wavelet Core
0405
0607
0809
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
FD
DEC1
DE
C2
FD
EXE
CU
TEEX
EC
UTE
FD
EXE
CU
TE
STOA
STOBS
TOC
0W
AIT
NC
2C
LR3
45
6
MU
X1
MU
X2
ST1
EN
ABLE
SH
IFT
DA
TA SH
IFTED
EN
ABLE
SHIFT
DATA S
HIFTED
ENA
BLE S
HIFT
DA
TA SH
IFTED
REG
ISTER A
VALID
TO R
EAD
RE
GIS
TER
B VA
LID TO
REA
D
0W
AITN
C2
CLR
34
56
0W
AITN
C2
CLR
34
56
0W
AIT1
CLR
23
45
0W
AITN
C2
CLR
34
56
0W
AIT1
CLR
23
45
0W
AIT1
CLR
23
45
6S
TO
7STO
7STO
7STO 7STO
6STO
6STO
A0A1
A2A3
A4
A5
A6
A7
D0
D1
D2
D3
D4
D5
D6
D7
TIME
ITRDEC
OD
ER
SH
IFT CTR
L
RE
GIS
TER
AS
TATU
SR
EG
ISTE
R B
STA
TUS
DE
CO
DE
RFILTE
R R
UN
MU
X FILTE
R R
UN
FILTER
RU
N
FILTER S
TATU
S
RE
GIS
TER
AD
DR
ES
S
RE
GIS
TER
DATA
FSM
0a
FSM
1a
FSM
2a
FSM
3a
FSM
0b
FSM
1b
FSM
c
Gambar 14. Timing Diagram Wavelet Core Dalam DSP Engine
9. Hierarki Desain Dan Timing Dalam SystemC Emulasi hardware dari systemc memerlukan perhatian dalam timing desain. Signal dalam VHDL bisa di-read dan di-write secara simultan. Dalam systemc, akses read dan write pada sc_signal dilakukan secara bergantian dengan akses read dilaksanakan terlebih dahulu.
DFFE DFFEIN OUT A OUT B
CLOCK
ENABLE
Gambar 15. Rangkaian Register
Gambar 16. Simulasi Rangkaian Register Dalam SystemC Percobaan desain dalam SystemC untuk rangkaian register pada gambar 9 dengan code: ….… sc_signal<int> sample; sc_signal<int> Aresult; sc_signal<int> Bresult; ….… dffes dffa1 ( "registerA" ); dffa1.clk(clock1); dffa1.ena(ena); dffa1.clr(reset); dffa1.din(sample); dffa1.dout(Aresult); dffes dffa2 ( "registerB" ); dffa2.clk(clock1); dffa2.ena(ena);
dffa2.clr(reset); dffa2.din(Aresult); dffa2.dout(Bresult); ….… Dan tiap modul dffes mempunyai code : ………. sc_signal<int> qwire; void do_ffes() { if (clr) { qwire = 0; } else if (clk.event()) { if (ena.read()==true) { qwire = din.read(); } else { qwire = qwire; } dout.write(qwire); } }; ………. Maka terdapat empat signal (sc_signal) bertautan yang harus dilalui data dari port input DFFE pertama hingga port output DFFE kedua, mengakibatkan latency clock = 4. Pada VHDL, latency yang terjadi untuk rangkaian pada gambar 9 adalah sama dengan 2.
Signalqwire
SignalAresult
Signalqwire
SignalBresult
Gambar 17. Rantai Signal Latency akibat rantai signal pada gambar 11 dapat dihilangkan dengan menggantikan sc_signal<int> qwire dengan int qwire. Hasil simulasinya adalah seperti pada gambar 12.
Gambar 18. Simulasi Rangkaian Register Dengan Reduksi Rantai Signal Penggunaan variable sebagai pengganti sc_signal memberikan konsekuensi modul harus mempunyai initial value bagi variable. Konsekuensi dari penggunaan variable dalam VHDL adalah desain tidak lagi generik dan tidak reliable. Ketidakreliable-an modul juga terjadi dalam SystemC seperti diperlihatkan pada gambar 12. Solusi dari masalah ini adalah menggunakan sc_buffer untuk menggantikan sc_signal. Signal sc_buffer mirip dengan signal dalam VHDL, konsekuensi dari penggunaan sc_buffer adalah waktu kompilasi yang jauh lebih lama (terutama jika menggunakan Cygwin).
Gambar 19. Simulasi Rangkaian Register Dengan Reduksi Rantai Signal Dan Driving Port Enable
Gambar 20. Latency akibat penggunaan sc_signal. Latency juga disebabkan oleh hirarki desain, walaupun sc_signal telah digantikan dengan dengan sc_buffer. Pada gambar 14. Timing Diagram Wavelet Core Dalam DSP Engine, terlihat latency akibat hirarki desain. Address register dihasilkan oleh komponen control_filter_a dalam modul wavecore baru menghasilkan data yang siap pada dua clock berikutnya.