Hari ini saya berdiskusi dengan tim yang menemui problem pada implementasi FPGA. Desain RTL yang dia buat, jika diimplementasi di Spartan 3 (Xilinx) berjalan dengan baik, tapi jika diimplementasi di Spartan 6 gagal. Itu berarti netlist hasil sintesis ke Spartan 6 berbeda dengan Spartan 3.
Hal ini bisa terjadi karena beberapa hal, misalnya compile (ISE) salah menginterpretasi logic desain RTL-nya (hehe :D), atau mungkin juga karena coding style RTL-nya tidak type-save sehingga memungkinkan terjadinya perbedaan hasil simulasi dengan sintesis, atau ketidakkonsistenan hasil sintesis. Beberapa tulisan telah membahas hal ini dan salah satunya ada di http://www.eda.org/vlog-synth/Mills_Final.pdf
Saya jadi teringat LEDA, tools untuk mengecek RTL coding style dan mendeteksi kemungkinan terjadinya synthesis missmacth tanpa harus melakukan sintesis. Tutorial LEDA pernah saya tulis di http://yansyafri.wordpress.com/2007/11/20/leda-rtl-checker/. Berikut saya copas kembali.
Saat men-synthesis desain baik kadalam device ASIC maupun FPGA terkadang kita temui error atau warning yang tidak didapatkan ketika proses simulasi dan verifikasi baik di ModelSim, VCS, ataupun tool RTL simulation lainnya. Hal ini dikarenakan tool RTL simulation hanya menggunakan library verilog IEEE sebagai rujukan, sedangkan pada target device keadaanya adalah kasuistik tergantung devicenya itu sendiri. Hal ini menjadi botle-neck ketika desainer belum berpengalaman pada target device tersebut (saat synthesis muncul banyak error), mengingat proses synthesis memakan waktu yang cukup lama.
Synopsys menyediakan tools khusus untuk mengatasi masalah ini: LEDA. Tools ini mampu menge-check code RTL (verilog atau VHDL) berdasarkan library dari target device yang akan kita pakai (misalnya Xilinx, Altera, TSMC, MOSIS), yaitu dengan cara meng-include-kan file library *.db
Untuk memulai menggunakan LEDA, berikut adalah tutorial singkatnya, semoga bermanfaat.
1. Setting environtment Synopsys-nya terlebih dahulu.
yayan@aquila:~> source /usr/local/CAD/Synopsys/setting_aquila.sh
2. Buat folder kerja LEDA, lalu buat script TCL-nya.
yayan@aquila:~/wimax/trunks/phy/verilog/leda/receiver> emacs receiver_leda.tcl &
Berikut contohscript TCL-nya mulai dari (#include):
#include file or library path
set search_path "../../integrated \
../../inc \"
#verilog file compile
read_verilog ../../../../phy/verilog/integrated/receiverTop.v
#top level module
current_design -work receiverTop
#you can select or deselect rules here, format:
#rule_deselect/rule_select –policy [policy_name] –rule [rule_name]
rule_deselect –policy DC –rule DCHDL_115
#check syntax
check
#log file dumped into ./leda-logs/checker.log
report
# quit leda shell
quit
set search_path "../../integrated \
../../inc \"
#verilog file compile
read_verilog ../../../../phy/verilog/integrated/receiverTop.v
#top level module
current_design -work receiverTop
#you can select or deselect rules here, format:
#rule_deselect/rule_select –policy [policy_name] –rule [rule_name]
rule_deselect –policy DC –rule DCHDL_115
#check syntax
check
#log file dumped into ./leda-logs/checker.log
report
# quit leda shell
quit
Deskripsi rules dapat dilihat di $/leda/Z200709/doc/user.pdf pada section C Leda Prebuilt Configuration (terdapat tabel nama rule, policy-nya, dan deskripsinya). Deskripsi warning atau error saat compilation atau elaboration dapat dilihat pada section E Error And Warning Message List. Beberapa message bisa dihilangkan jika tidak dibutuhkan (lihat Deselecteble Messages pada Section E) tambahkan script berikut pada TCL.
rule_deselect –rule [label]
3. Jalankan script TCL-nya.
yayan@aquila:~/wimax/trunks/phy/verilog/leda/receiver> leda +tcl_file receiver_leda.tcl
4. Selamat mencoba (ya2n).
Catatan tambahan:
- Ada tools lain yang dapat dipakai untuk melakukan equivalence check, yaitu Formality.
- Equivalence check adalah mengetes kesesuiaian logic hasil sintesis (netlist) dengan RTL menggunakan metode formal checking.
- Link: http://www.synopsys.com/tools/verification/formalequivalence/pages/formality.aspx
No comments:
Post a Comment