Tag Archives: CP

สบายๆกับ Verilog ด้วย Icarus Verilog และ GTKWave สำหรับ Windows

บทความนี้เขียนขึ้นมาเพื่อเพื่อนๆชาว CP35 โดยเฉพาะ คงทราบกันดีว่าโปรแกรม  ISE Webpack นั้นเป็นโปรแกรมสำหรับ Edit และ Synthesis โค้ดภาษา Verilog และสามารถใช้ควบคู่กับโปรแกรม ModelSim XE เพื่อที่จะจำลองการทำงานของ Test Fixture เพื่อดู Wave Form ของสัญญาณต่างๆ ทั้งนี้การ Synthesis ของ Webpack นั้นใช้เวลานาน และอีกอย่างหนึ่ง สัญญาณที่แสดงใน ModelSim นั้นมีจำกัด ทำให้การ Debug เป็นไปได้ลำบาก แต่สำหรับ Solution ใหม่ที่จะนำมาเสนอในวันนี้คือ Icarus Verilog สำหรับการ Run code verilog และ GTKWave สำหรับการ เปิดไฟล์ .vcd ที่ Icarus generate ออกมาเพื่อที่จะดู waveform ของสัญญาณต่างๆ โดยตัว Icarus Verilog เองเป็น source code library สำหรับให้นำไปใช้งานต่อไป แต่สำหรับที่เราจะใช้ในวันนี้คือ Icarus Verilog for Windows ที่มีคนนำมา compile แล้วเปิดให้โหลดมาใช้กัน

ลิงค์ต่างๆที่เกี่ยวข้องมีดังนี้

ดาวน์โหลดไฟล์ต่างๆ แล้ว Install หรือ Extract มันออกมา สำหรับ Library นั้นให้เอาไปไว้ที่ๆเดียวกับ ไฟล์ gtkwave.exe เท่านี้กก็พร้อมที่จะ synthesis + simulate แล้ว

คำสั่งของ Icarus Verilog for Windows > พิมพ์คำสั่งใน CMD โดยให้ Directory ปัจจุบันเป็นตำแหน่ง bin directory ที่ลง icatus Verilog ไว้เช่น C:\iverilog\bin เป็นต้น ใช้คำสั่ง cd <path> เพื่อไปยัง directory นั้น

Capture

แล้วพิมพ์คำสั่ง iverilog -o <output file path> <verilog file path> สำหรับ code ใน verilog file นั้นสามารถใส่ Test Fixture ลงไปในไฟล์เดียวกันได้เลยเพื่อที่จะใช้ function $display ได้

Capture2

ต่อมาเป็นการแสดง output ของ output file โดยใช้คำสั่ง vvp <output file>

Capture3

แล้วโปรแกรมก็จะแสดง output ที่เกิดจาก $display ออกมา สำหรับการสร้างไฟล์ waveform ทำได้โดยการแก้ code ใน verilog ให้ dump variable ต่างๆออกมาโดยเพิ่ม code ดังนี้ก่อนเริ่มการ Simulate

$dumpfile(“filename.vcd”);
$dumpvars(0,<Module Name>);
$dumpon ;
//code ระหว่างการ simulate
$dumpoff ;
$finish;

เท่านี้ก็จะได้ไฟล์ filename.vcd มาอยู่ใน folder bin ของเราแล้ว และใช้โปรแกรม GTKWave เปิดไฟล์นี้ จากนั้นเลือกสายสัญญาณแล้วกด Append เพื่อนำไปต่อในรายการ Signals

Capture4

ข้อดีของโปรแกรมนี้คือสามารถอ่าน waveform ได้ทั้งอุปกรณ์ภายในด้วย ตามที่เห็นในรูป

Capture5

จากนั้นจะ Zoom-out Zoom-in Drag ไอตัว timeline อะไรก็หวังว่าทำกันเป็นนะ ระดับนี้แล้ว ฮ่าๆ

สำหรับการใช้งานโปรแกรมนี้เพียงคร่าวๆ ก็มีเพียงเท่านี้ ลองใช้ดู แล้วจะติดใจ

เอ้อลิมบอกไป ปล. ใช้คู่กับ Notepad++ (โปรแกรม editor สารพัดภาษา) จะแหล่มมาก

http://www.icarus.com/eda/verilog/