การใช้งานซอฟต์แวร์ Lattice Radiant สำหรับบอร์ด Lattice iCE40UP FPGA#

Keywords: Lattice iCE40 UltraPlus FPGA, Lattice Semiconductor FPGAs, Lattice Radiant Software


ชิป FPGA ของบริษัท Lattice Semiconductor#

Lattice Semiconductor เป็นผู้ผลิตชิป FPGA ซึ่งมีอยู่หลายตระกูล (FPGA Families) ยกตัวอย่างดังนี้

  • General-Purpose FPGAs
    • Lattice Avant FPGA Architecture (16nm FinFET)
      • Avant-E
    • Lattice Nexus FPGA Platform (28nm FD-SOI: "fully depleted silicon-on-insulator")
      • Certus-NX
      • CertusPro-NX
    • ECP5/ECP5-5G (40nm process)
    • LatticeECP3 (65nm process)
    • LatticeECP2/M
    • LatticeXP2
  • Video Bridging & Processing FPGAs
    • CrossLink-NX, CrossLinkPlus, CrossLink
  • Security FPGAs (with Crypto Hard IP Cores)
    • MachXO5-NX
    • MachXO3, MachXO3D
    • MachXO2
    • MachXO
  • Ultra-Low Power & Form Factor FPGAs (40nm process)
    • iCE40 UltraPlus
    • iCE40 Ultra
    • iCE40 LP/HX

ซอฟต์แวร์ที่ใช้ในการออกแบบวงจรสำหรับชิป Lattice FPGA (มีเวอร์ชันสำหรับ Windows และ Linux) ได้แก่

ซอฟต์แวร์ Lattice Radiant จะใช้กับชิป Lattice FPGA หลายรุ่นที่ออกมาใหม่ เช่น Avant-E, Certus-NX / CertusPro-NX และ iCE40 Ultra Plus (แต่ถ้าชิปเป็นรุ่นอื่น ๆ จะใช้ซอฟต์แวร์ Lattice Diamond)

จากข้อมูลบนเว็บไซต์ของบริษัท: https://www.latticesemi.com/Support/Licensing (ในขณะที่เขียนบทความนี้) จะเห็นได้ว่า ซอฟต์แวร์ Lattice Radiant รองรับชิป FPGA ในตระกูลต่อไปนี้

  • Subscription: Avant-E, MachXO5-NX, CertusPro-NX-RT
  • Free: CertusPro-NX, CrossLink, iCE40 UltraPlus

บทความนี้จะกล่าวถึง ขั้นตอนการติดตั้งและใช้งานซอฟต์แวร์ Lattice Radiant (ทดลองใช้เวอร์ชัน v2023.1 สำหรับระบบปฏิบัติการ Windows) และทดลองใช้ในการแปลงโค้ด Verilog ให้เป็นวงจรสำหรับชิป iCE40UP5K และใช้บอร์ด iCE-Sugar เป็นบอร์ดทดลอง

รูป: บอร์ด iCE-Sugar

 


ขั้นตอนการติดตั้งซอฟต์แวร์ Lattice Radiant#

ถัดไปเป็นการติดตั้งซอฟต์แวร์ Lattice Radiant v2023.1 และในบทความนี้ จะเลือกติดตั้งไฟล์เฉพาะสำหรับชิปในตระกูล iCE40 UltraPlus เท่านั้น และไม่เลือกติดตั้ง ModelSim - Lattice FPGA Edition

รูป: ขั้นตอนการติดตั้งซอฟต์แวร์ Lattice Radiant

โปรแกรมที่เป็นเครื่องมือสำหรับการสังเคราะห์วงจร โดยการแปลงโค้ด HDL (Hardware Description Language) ให้เป็นวงจรระดับลอจิกเกต มีสองตัวเลือกที่ได้มีการติดตั้งมาพร้อมกับ Lattice Radiant คือ

  • Lattice Synthesis Engine (LSE)
  • Synopsys Synplify Pro (Third-party Software)

รูป: Lattice LSE Design Flow (Source: Lattice Semiconductor)

เมื่อติดตั้งได้แล้ว จะต้องไปยังเว็บไซต์ Radiant Software Licensing ของบริษัท Lattice Semiconductor เพื่อขอรับไฟล์ลิขสิทธิ์ (License File) ในการใช้งานซอฟต์แวร์ซึ่งมีอายุการใช้งานได้หนึ่งปี แนะนำให้เลือกแบบ Node-Locked License File

ผู้ใช้จะต้องระบุ NIC ของเครื่องคอมพิวเตอร์ของผู้ใช้ ซึ่งเป็น MAC Address ของ Ethernet / Wi-Fi Interface ในเลขฐานสิบหก (Hexadecimal) จำนวน 12 ตัว และเมื่อกรอกข้อมูลได้สำเร็จแล้ว ก็จะได้รับไฟล์ (license.dat) ที่ถูกส่งมาทางอีเมล์ของผู้ใช้ที่ได้ลงทะเบียนไว้ เมื่อเปิดใช้งานซอฟต์แวร์ครั้งแรก จะมีการตรวจสอบไฟล์ license.dat ก็ให้เลือกไฟล์ที่ได้ดาวน์โหลดมายังเครื่องของผู้ใช้

 


ตัวอย่างการใช้ซอฟต์แวร์ Lattice Radiant#

เมื่อเปิดใช้งานซอฟต์แวร์ Lattice Radiant ก็ให้เริ่มต้นด้วยการสร้างโปรเจกต์ใหม่ (New Project) ระบุชื่อโปรเจกต์ และไดเรกทอรีใหม่สำหรับเก็บไฟล์ต่าง ๆ ของโปรเจกต์ จากนั้นให้เลือกชิป FPGA ที่ต้องการใช้งาน

ในตัวอย่างนี้ได้ตั้งชื่อโปรเจกต์เป็น leds_demo และเนื่องจากฮาร์ดแวร์ที่ได้นำมาทดลองคือ บอร์ด iCE-Sugar ดังนั้นจึงเลือกใช้ชิป iCE40UP5K-SG48I

รูป: หน้าต่างหลักเมื่อได้เปิดใช้งานซอฟต์แวร์ Lattice Radiant

รูป: เริ่มต้นด้วยการสร้างโปรเจกต์ใหม่ และยังไม่ต้องเพิ่มไฟล์ HDL ลงในโปรเจกต์

รูป: เลือกชิป iCE40UP5K-SG48I สำหรับโปรเจกต์

รูป: กลับสู่หน้าต่างหลักเมื่อได้สร้างโปรเจกต์ใหม่แล้ว

รูป: สร้างไฟล์ใหม่สำหรับโค้ด Verilog (.v) แล้วเพิ่มไฟล์ไว้ในโปรเจกต์

 

ตัวอย่างโค้ด Verilog มีดังนี้

File: leds.v

module leds(
   input  wire clk,
   output wire [2:0] leds
);

   localparam N = 24;
   reg  [N-1:0] counter = 0; // N-bit register
   wire [N-1:0] sum;

   assign sum = counter + 1'b1;

   always @(posedge clk) begin
     counter <= sum;
   end

   assign leds = ~{counter[N-1], counter[N-2], counter[N-3]};

endmodule

ถ้าต้องการกำหนดเงื่อนไขเชิงเวลา (Timing Constraints) สำหรับการสังเคราะห์วงจร เช่น การกำหนดคาบความถี่ของสัญญาณ Clock (ความถี่ 12MHz หรือ มีคาบประมาณ 83.33ns สำหรับบอร์ด iCE-Sugar) ในวงจร ก็ให้เพิ่มบรรทัดต่อไปนี้ ลงในไฟล์ .sdc (Pre-Synthesis Constraint File) ของโปรเจกต์

SDC Timing Constraints

create_clock -name clk -period 83.33 [get_ports clk]

 

รูป: ทำขั้นตอน Synthesize Design เพื่อคอมไพล์โค้ดและสังเคราะห์วงจรลอจิก

 

เมื่อได้ทำขั้นตอนการสังเคราะห์วงจรแล้ว ถัดไปจะต้องกำหนดตำแหน่งของขาที่ใช้กับ I/O ของวงจร โดยให้คำสั่งจากเมนู Tools > Device Constraint Editor

รูป: การกำหนดตำแหน่งขา I/O ของวงจร

หรือจะแก้ไขไฟล์ .pdc (Post-Synthesis Constraint File) ของโปรเจกต์ ดังนี้

ldc_set_location -site {40} [get_ports {leds[0]}]
ldc_set_location -site {41} [get_ports {leds[1]}]
ldc_set_location -site {39} [get_ports {leds[2]}]
ldc_set_location -site {35} [get_ports clk]

 

จากนั้นให้ทำขั้นตอนให้ครบทุกขั้นตอนตามลำดับใน Lattice FPGA Design Flow ซึ่งในขั้นตอนสุดท้าย ก็จะได้ไฟล์ "บิตสตรีม" (.bin) ที่นำไปทดลองกับบอร์ดFPGA ได้

  • Synthesize Design
  • Map Design
  • Place & Route Design
  • Export Files

 

รูป: การทำขั้นตอนได้สำเร็จทุกขั้นตอน

ซอฟต์แวร์ Lattice Radiant จะสร้างไฟล์รายงาน Report Files ในแต่ละขั้นตอน แนะนำให้ผู้ใช้ได้ลองศึกษาดูรายละเอียดในไฟล์เหล่านั้น

รูป: ตัวอย่างผลการสังเคราะห์วงจร และข้อมูลเกี่ยวกับทรัพยากรของชิป FPGA ที่ถูกใช้ไปสำหรับวงจร

นอกจากนั้นแล้ว ผู้ใช้ยังสามารถดูผลการสังเคราะห์วงจรในระดับต่าง ๆ เช่น ในระดับ RTL (Register-Transfer Level) ก็ให้ดูจาก Tools > Netlist Analyzer

รูป: ผังวงจรในระดับ RTL ที่ได้จากการคอมไพล์โค้ด Verilog และสังเคราะห์วงจร

แต่ถ้าอยากจะทราบว่า วงจรประกอบด้วยองค์ประกอบพื้นฐานภายในชิป FPGA อย่างไรบ้าง มีการจัดวางตำแหน่งของลอจิกเซลล์ (Logic Cells) และเลือกเส้นทางสัญญาณเชื่อมต่อกันอย่างไร ก็ให้ดูจาก Tools > Physical Designer

รูป: การแสดงโครงสร้างที่มีลักษณะเป็นอาร์เรย์ภายในชิป FPGA (Placement Mode) และลอจิกเซลล์ (Logic Cells) ที่ถูกนำไปใช้ในการสร้างวงจร

รูป: การแสดงโครงสร้างที่มีลักษณะเป็นอาร์เรย์ภายในชิป FPGA (Routing Mode) และการเชื่อมต่อสัญญาณ (Nets) ระหว่างลอจิกเซลล์ของวงจร

รูป: การแสดงเส้นทางของสัญญาณ Clock ไปยังส่วนต่าง ๆ ของวงจรภายในชิป FPGA

รูป: องค์ประกอบพื้นฐานเชิงลอจิกที่เรียกว่า SLICE ของชิป FPGA ที่ถูกใช้เป็นส่วนหนึ่งของวงจร

รูป: โครงสร้างภายใน SLICE ที่ประกอบด้วย 4-Input LUTs + Carry Logic + Flip-Flops (1 SLICE = 2 Logic Cells)  

ถ้าต้องการเปลี่ยนจาก LSE ไปลองใช้ Synplify Pro for Lattice ก็ทำได้ง่าย จากนั้นให้ทำขั้นตอนการสังเคราะห์วงจรใหม่อีกครั้ง แล้วเปิดดูผังวงจรด้วย Netlist Analyzer

รูป: การเลือกเครื่องมือสำหรับการสังเคราะห์วงจร โดยใช้ Synplify Pro for Lattice

รูป: ตัวอย่างผังวงจรที่ได้จากการสังเคราะห์วงจรด้วย Synplify Pro for Lattice

ผู้ใช้สามารถเรียกใช้งาน Synplify Pro for Lattice จากโปรเจกต์ใน Lattice Radiant ได้เช่นกัน โดยเลือกจากเมนู Tools > Synplify Pro for Lattice

รูป: การใช้งาน Synplify Pro for Lattice

รูป: ตัวอย่างผังวงจรในมุมมอง RTL View

 


กล่าวสรุป#

บทความนี้ได้นำเสนอการติดตั้งและใช้งานซอฟต์แวร์ Lattice Radiant ในเบื้องต้น และมีตัวอย่างโค้ด Verilog เพื่อสาธิตการสร้างวงจรควบคุมการทำงานของ RGB LED สำหรับบอร์ด iCE-Sugar (ชิป Lattice iCE40UP5K FPGA)

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2023-08-19 | Last Updated: 2023-08-19