Tổng hợp thiết kế

Một phần của tài liệu bài giảng môn thiết kế vi mạch lập trình được - nguyễn thế dũng (Trang 82 - 88)

Quá trình tổng hợp FPGA (FPGA Synthesis) bằng chương trình ISE bao gồm các bước như sau.

Hình 3.3. Tổng hợp thiết kế FPGA trên Xilinx ISE

Check Syntax & Synthesis: Trước khi thiết kế được tổng hợp thì mã nguồn VHDL được biên dịch và kiểm tra trước. Nếu xuất hiện lỗi cú pháp ở mã nguồn thì qua trình tổng hợp sẽ dừng lại. Nếu mô tả VHDL không có lỗi thì chuyển sang bước thứ hai là tổng hợp (synthesis). Tổng hợp thiết kế là chuyển mô tả từ mức trừu tượng cao (con người có thể đọc hiểu) xuống mức trừu tượng thấp hơn (máy tính mới có khả năng đọc hiểu). Đối với FPGA quá trình tổng hợp logic là quá trình biên dịch từ mô tả chức năng sang mô tả cổng (netlist). Mô tả cổng bản chất vẫn là các mô tả VHDL nhưng sử dụng các phần tử của FPGA, hiểu một cách khác nếu mô tả chức năng là sơ đồ nguyên lý thì mô tả netlist là sự chi tiết hóa sơ đồ nguyên lý. Có thể so sánh mã dưới dạng Netlist

như mã Assembly của chương trình gốc mô tả bằng các ngôn ngữ lập trình bậc cao C/C++, Pascal, Basic...

Các mã nguồn VHDL được chia thành hai dạng là tổng hợp được (Synthesizable code) và không tổng hợp được (Simulation-only code), việc phân biệt hai dạng mã nguồn này được ISE làm tự động. Khi cố tình tổng hợp một cấu trúc chỉ dùng cho mô phỏng thì sẽ gây ra lỗi. Người thiết kế vì vậy ngoài việc đảm bảo chức năng làm việc đúng cho mạch còn luôn phải đảm bảo rằng những cấu trúc viết ra là những cấu trúc có thể tạo thành mạch thật nghĩa là tổng hợp được.

Điểm đáng lưu ý tại thời điểm này là quá trình tổng hợp bao gồm cả quá trình tối ưu logic cho thiết kế, ví dụ nếu chúng ta sử dụng bộ trừ để làm phép so sánh nhưng về thực chất để so sánh hai số chỉ cần thiết lập bít nhớ cuối cùng của phép trừ mà không cần quan tâm đến bản thân giá trị thu được của phép tính. Chính vì vậy sau khi tổng hợp ta nhận được cảnh báo (Warning) từ chương trình.

Xst:646-Signal <sub<3:0>> is assigned but never used. This unconnected signal will be trimmed during the optimization process.

Tất cả những tín hiệu thừa sẽ bị bỏ đi sau khi tổng hợp nhằm tiết kiệm tài nguyên FPGA, nếu muốn bỏ cảnh báo này chúng ta có thể thay đổi thiết kế của bộ so sánh bằng cách mô tả chi tiết chuỗi nhớ thay vì dùng cả bộ cộng/trừ 4 bit. Những cảnh báo dạng này thuộc dạng vô hại vì nó không ảnh hưởng tới chức năng của mạch. Tuy vậy kinh nghiệm thực tế cho thấy trong mọi trường hợp việc kiểm tra các cảnh báo là cực kỳ cần thiết vì một thiết kế được biên dịch và mô phỏng đúng rất có thể chức năng của mạch bị thay đổi do việc tối ưu (cắt bỏ các tín hiệu bị coi là thừa), hoặc nhờ những cảnh báo này có thể tìm ra những sai sót trong thiết kế nguyên lý, nhất là với những thiết kế lớn và phức tạp.

Synthesis report: Kết quả tổng hợp được ghi dưới dạng một tệp văn bản, trong đó thống kê về các phần tử logic, các phần tử nhớ, số LUT, số cổng vào ra (IO_BUF) và tham số về mặt thời gian, ví dụ kết quả tổng hợp như sau:

================================================ * Final Report *

RTL Top Level Output File Name : sp3_led.ngr Top Level Output File Name : sp3_led

Output Format : NGC Optimization Goal : Speed Keep Hierarchy : NO

Device utilization summary: ---

Selected Device : 3s500epq208-4 Number of Slices: 4 out of 4656 0%

Number of 4 input LUTs: 8 out of 9312 0% Number of IOs: 16

Number of bonded IOBs: 16 out of 158 10%

================================================ TIMING REPORT

Timing Summary: --- Speed Grade: -4

Minimum period: No path found

Minimum input arrival time before clock: No path found Maximum output required time after clock: No path found Maximum combinational path delay: 6.320ns

Khi phân tích kết quả tổng hợp cần lưu ý hai thông tin cơ bản. Thứ nhất là thông tin về tài nguyên, trong báo cáo sẽ liệt kê các dạng tài nguyên và số lượngcủa từng loại được sử dụng cho toàn khối thiết kế (Device utilization summary). Thông tin này trong một số trường hợp còn giúp người thiết kế kiểm định lại sơ đồ thuật toán ban đầu bằng cách so sánh giữa tài nguyên thực tế sau tổng hợp với tài nguyên ước tính sơ bộ ở ban đầu.

Thông tin thứ hai là thông tin về mặt thời gian, theo ngầm định thiết kế sẽ được tối ưu với tiêu chí đầu tiên là giảm tối đa thời gian trễ (Optimization Goal: Speed). Các thông tin thời gian được liệt kê bao gồm thời gian trễ tổ hợp (combinational delay) và chu kỳ của xung nhịp (Clock informations) nếu có. Trong báo cáo cũng sẽ liệt các đường gây trễ cực đại (Critial paths), các thông tin này có thể giúp người thiết kế tối ưu hóa lại mô tả VHDL hoặc thuật toán để đạt được độ trễ thấp hơn một cách hiệu quả.

Kết xuất mô tả netlist: mô tả netlist là mô tả VHDL của thiết kế nhưng được ánh xạ lên thư viện phần tử logic của FPGA. Mô tả netlist là dạng mô tả ở mức cổng vì vậy không mô tả trực quan được chức năng của vi mạch mà chỉ thể hiện được cấu trúc của mạch, trong đó các khối con (components) là các phần tử cơ bản được mô tả trong thư viện UNISIM của FPGA. Ví dụ một mô tả netlist có dạng như sau: --- library IEEE; use IEEE.STD_LOGIC_1164.ALL; library UNISIM; use UNISIM.VCOMPONENTS.ALL; use UNISIM.VPKG.ALL; entity sp3_led is port (

LED1 : out STD_LOGIC; LED2 : out STD_LOGIC; ...

SW7 : in STD_LOGIC := 'X'; SW8 : in STD_LOGIC := 'X'); end sp3_led;

signal LED2_OBUF_3 : STD_LOGIC; ...

signal SW7_IBUF_29 : STD_LOGIC; signal SW8_IBUF_31 : STD_LOGIC; begin LED81 : LUT2 generic map( INIT => X"1" ) port map ( I0 => SW8_IBUF_31, I1 => SW7_IBUF_29, O => LED8_OBUF_15); ... LED8_OBUF : OBUF port map ( I => LED8_OBUF_15, O => LED8); LED51_INV_0 : INV port map ( I => SW5_IBUF_25, O => LED5_OBUF_9); end Structure; ---

Netlist có thể không phản ánh đúng bản chất thực tế của mạch mà mô tả này này chỉ sử dụng để kiểm tra lại chức năng của vi mạch sau khi ánh xạ lên

mô tả VHDL ban đầu, tức là có thể dùng bất kỳ chương trình mô phỏng logic nào mà hỗ trợ thư viện UNISIM.

Create Technology schematic (Sơ đồ công nghệ chi tiết). Sau khi tổng hợp chương trình cũng cho phép kết xuất sơ đồ công nghệ chi tiết của thiết kế mà bản chất là mô tả trực quan bằng hình ảnh của netlist, ví dụ một sơ đồ công nghệ chi tiết ở hình sau:

Hình 3.4. Sơ đồ công nghệ

Việc so sánh sơ đồ này với sơ đồ nguyên lý ở bước ban đầu cho phép kiểm tra trực quan sơ bộ việc thực hiện đúng sơ đồ nguyên lý của mô tả VHDL.

Create RTL schematic (Sơ đồ logic chi tiết) Sơ đồ logic chi tiết là sơ đồ thể hiện chức năng của thiết kế sử dụng các cổng logic chuẩn như AND, OR, NOT, FFD thay vì sử dụng các phần tử chuẩn của FPGA, sơ đồ này vì thế không phụ thuộc vào đối tượng công nghệ cụ thể.

Một phần của tài liệu bài giảng môn thiết kế vi mạch lập trình được - nguyễn thế dũng (Trang 82 - 88)