mở đầu cho thời kỳ hoàng kim của vi mạch điện tử [13]. Vi mạch tích hợp là các mạch điện bao gồm các linh kiện bán dẫn nhƣ transistor và các linh kiện điện tử thụ động nhƣ điện trở đƣợc tích hợp trên cùng một phiến silicon. Kích thƣớc của phiến silicon rất nhỏ, chỉ cỡ vài milimet cho tới 1 inch (cỡ 2,54 cm) theo mỗi chiều. Tiêu chuẩn để đánh giá độ tích hợp của một vi mạch tích hợp là số lƣợng các transistor trên vi mạch.
Đến thập niên 60 cùng thế kỷ, ngành công nghiệp bán dẫn bắt đầu phát triển với các vi mạch cỡ nhỏ (SSI: Small Scale Integration), gồm khoảng từ 1 đến vài chục cổng logic nhƣ cổng NAND, NOR, OR, XOR… Các thế hệ phát triển vi mạch tích hợp tiếp theo là vi mạch tích hợp cỡ vừa MSI (MSI: Medium Scale Integration) có khoảng từ 100 tới 3000 cổng logic, vi mạch tích hợp cỡ lớn (LSI: Large Scale Integration) tích hợp từ 30000 tới 100000 cổng trên một vi mạch. Hiện nay thế hệ vi mạch tích hợp cỡ rất lớn (VLSI: Very Large Scale Integration) đã ra đời tích hợp từ 100000 tới hàng triệu các cổng logic trên một vi mạch. VLSI cho phép chúng ta xây dựng các bộ vi xử lý 64-bit cùng với bộ nhớ đệm và các khối xử lý toán học. Với công nghệ CMOS ngày càng phát triển, kích thƣớc của các transistor ngày càng thu nhỏ cho phép tích hợp ngày càng nhiều transistor trên một vi mạch (thƣờng tính theo đơn vị 1 inch2).
Có nhiều phƣơng pháp thiết kế VLSI tùy theo cách tiếp cận. Theo cách tiếp cận về lịch sử phát triển, đầu tiên ngƣời ta quan niệm VLSI có hai phƣơng pháp thiết kế là phƣơng pháp thiết kế toàn phần (full-custom) và phƣơng pháp thiết kế bán phần (semi- custom). Không lâu sau đó, với những ƣu điểm về đầu tƣ về nhân lực và thời gian, phƣơng pháp thiết kế bán phần đã phát triển một cách nhanh chóng hình thành nên phƣơng pháp thiết kế theo mảng cổng logic (gate array) và phƣơng pháp thiết kế dựa trên thƣ viện tế bào chuẩn (standard cell). Sự phát triển nhanh chóng của VHDL đã hình thành các nhánh nhỏ hơn nữa nhƣ phƣơng pháp thiết kế theo mảng cổng logic lại đƣợc chia nhỏ thành hai loại hình thiết kế là: Mask programmable và Field- programmable (ROM, PROM, EPROM, EEPROM, PLA, PAL, CPLD, FPGA).
Trong thực tế, tùy theo yêu cầu thiết kế mà ngƣời ta có thể lựa chọn một trong các phƣơng pháp trên. TIEU LUAN MOI download : skknchat@gmail.com 12 Quy trình thiết kế VLSI: Quy trình thiết kế VLSI bao gồm nhiều công đoạn khác nhau. Về cơ bản quy trình thiết kế VLSI gồm hai công đoạn thiết kế lớn: thiết kế logic (logical design) và thiết kế vật lý (physical design). Quy trình thiết kế VLSI đƣợc mô tả nhƣ trong Hình 6.
Hình 6: Quy trình thiết kế VLSI [5]. * Công đoạn thiết kế logic đƣợc chia thành 4 bƣớc: - Bƣớc1. Mô tả thiết kế (Design entry): Từ yêu cầu bài toán, ta sử dụng các ngôn ngữ mô tả phần cứng để thiết kế. Sau đó mô hình thiết kế sẽ đƣợc mô phỏng và kiểm chứng nhờ các công cụ mô phỏng.
Kết thúc bƣớc 1 các mạch đƣợc mô tả bằng ngôn ngữ phần cứng tƣơng ứng. Tổng hợp logic (Logic synthesis): Trong bƣớc này ta sử dụng các công cụ hỗ trợ tổng hợp phần cứng để tạo ra danh sách các cổng logic (các netlist thiết kế) đƣợc sử dụng trong thiết kế và liên kết giữa chúng với nhau. Phân chia hệ thống (System Partitioning): Ở bƣớc này ta thực hiện công việc mô-đun hóa, phân chia hệ thống thành các khối chức năng nhỏ hơn. Mô phỏng trƣớc khi thực hiện layout (Prelayout simulation): Là bƣớc cuối cùng của công đoạn thiết kế logic.
Bƣớc này thực hiện mô phỏng, kiểm tra thiết kế sau khi đã gắn với công nghệ chế tạo nhƣng chƣa thực hiện thiết kế vật lý (thực hiện layout). Trong thực tế, ta thực hiện mô phỏng ngay tại mỗi bƣớc để dễ dàng sửa sai, có thể loại hết các lỗi trong bƣớc đó. Nếu chƣa đạt yêu cầu thì ngƣời thiết kế phải TIEU LUAN MOI download : skknchat@gmail.com 13 thực hiện lại bƣớc đó và chỉnh sửa, tối ƣu thiết kế. Điều này hữu ích hơn rất nhiều so với việc chỉ thực hiện mô phỏng, kiểm tra một lần ở cuối công đoạn thiết kế logic.
* Công đoạn thiết kế vật lý: Tiếp sau công đoạn thiết kế logic là công đoạn thiết kế ở mức thấp hơn, đó là mức vật lý. Công đoạn thiết kế vật lý gồm 5 bƣớc: - Bƣớc 5. Vẽ sơ đồ nền (Floorplaning): Bƣớc đầu tiên trong công đoạn thiết kế vật lý ta thực hiện quy hoạch bề mặt vi mạch, tức là bố trí cụ thể vị trí các khối chức năng trên vi mạch sao cho giảm thiểu không gian thực thi phần cứng và nhiễu ảnh hƣởng giữa các khối với nhau. Đặt chỗ (Placement): Sau khi quy hoạch vị trí các khối chức năng của vi mạch, bƣớc này ta tiến hành công việc đặt chỗ các linh kiện, cụ thể là định vị từng cổng logic (từng trasistor) trên bề mặt vi mạch đã quy hoạch đảm bảo giảm nhiễu không gian cũng nhƣ nhiễu tín hiệu giữa các cổng logic.
Phân tích và ƣớc lƣợng các thông số mạch điện (Circuit extraction): Các thông số cơ bản của thiết kế nhƣ trễ, nhiễu, công suất tiêu thụ, hiệu năng của thiết kế đƣợc phân tích, đánh giá và ƣớc lƣợng tại bƣớc này. Mô phỏng sau khi thực hiện layout (Postlayout simulation): Đây là bƣớc cuối cùng của quy trình thiết kế VLSI. Bƣớc này cho phép ta thực hiện kiểm chứng tính đúng đắn của thiết kế và kiểm tra mức độ đáp ứng của hệ thống với yêu cầu đặt ra với đầy đủ các thông số vật lý. Nếu thiết kế không đạt yêu cầu đề ra thì ta phải quay lại các bƣớc để chỉnh sửa, tối ƣu thiết kế.
Nếu thỏa mãn yêu cầu đặt ra thì ta có thể tiến hành chế tạo mặt nạ và bƣớc sang quy trình sản xuất, chế tạo phần cứng. Công nghệ FPGA và quy trình thiết kế VLSI với công nghệ FPGA FPGA (Field-programmable gate array-mảng cổng lập trình đƣợc) là một vi mạch bao gồm tập hợp các khối logic khả trình đƣợc sắp xếp theo hàng và đƣợc liên kết bằng mạng định tuyến khả trình (programmable routing network). Kiến trúc tổng quan về FPGA đƣợc mô tả nhƣ trong Hình 7. TIEU LUAN MOI download : skknchat@gmail.com 14 Logic block Programmable interconnects I/O block Hình 7: Kiến trúc tổng quan FPGA.
Vi mạch FPGA đƣợc cấu thành từ ba bộ phận chính là: các khối logic cơ bản (logic blocks), hệ thống mạng liên kết lập trình đƣợc (programmable interconnects) và các khối vào/ra (I/O blocks). - Các khối logic cơ bản (logic blocks) là phần tử chính của FPGA. Khối logic đƣợc cấu thành từ các bảng tra cứu LUT (Look Up Table) và một phần tử nhớ đồng bộ flip-flop. LUT là khối logic có thể thực hiện bất kỳ hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop.
Một khối logic đƣợc mô tả nhƣ Hình 8. Hình 8: Sơ đồ khối một đơn vị logic của FPGA. Trong tài liệu hƣớng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice gồm 4 khối logic tạo thành, số lƣợng các Slices thay đổi từ vài ngàn đến vài chục ngàn tùy theo loại FPGA. - Hệ thống mạng liên kết lập trình được: Mạng liên kết trong FPGA đƣợc cấu thành từ các đƣờng kết nối theo hai phƣơng ngang và đứng, tùy theo từng loại FPGA mà các đƣờng kết nối đƣợc chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài.
Các đƣờng kết nối đƣợc nối với nhau thông qua các khối chuyển mạch lập trình đƣợc (programable switch), trong một khối TIEU LUAN MOI download : skknchat@gmail.com 15 chuyển mạch chứa một số lƣợng nút chuyển lập trình đƣợc, cho phép thực hiện các dạng liên kết phức tạp khác nhau. - Các khối vào/ra (I/O blocks): Đƣợc phân bổ xung quanh vi mạch tạo thành các liên kết với bên ngoài. Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA. Chúng có thể đƣợc kết nối với các thiết bị bên ngoài nhƣ LED, USB, RS232, RAM.
tuỳ theo mục đích sử dụng. - Các phần tử tích hợp sẵn: Ngoài các khối logic, tùy theo các dòng FPGA khác nhau, còn có các phần tử tích hợp sẵn đƣợc sử dụng cho những mục đích cụ thể. Ví dụ để thiết kế những ứng dụng dạng SoC, dòng Virtex 4, 5 của Xilinx có chứa nhân xử lý Power PC; để thiết kế những ứng dụng xử lý tín hiệu số, dòng Virtex của Xilinx tích hợp các DSP Slice là bộ nhân, cộng tốc độ cao, thực hiện hàm A*B+C. Ứng dụng của FPGA: FPGA đƣợc ứng dụng trong các lĩnh vực xử lý tín hiệu số, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính.
Do tính linh động cao trong quá trình thiết kế, FPGA cho phép giải quyết lớp những bài toán phức tạp mà trƣớc kia chỉ thực hiện nhờ phần mềm máy tính. Ngoài ra nhờ mật độ cổng logic ngày càng lớn, FPGA đƣợc ứng dụng cho những bài toán đòi hỏi khối lƣợng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực. Quy trình thiết kế VLSI với công nghệ FPGA: Thiết kế VLSI với công nghệ FPGA thƣờng tuân theo quy trình nhƣ mô tả trong Hình 9. Trong quá trình mô tả thiết kế (Design Entry), ngƣời thiết kế có thể sử dụng các sơ đồ mạch điện, các ngôn ngữ mô tả phần cứng hoặc kết hợp cả hai phƣơng pháp này.
Ngƣời thiết kế chỉ lựa chọn sử dụng sơ đồ mạch điện khi muốn mô tả chi tiết các phần cứng. Trái lại, sử dụng ngôn ngữ mô tả, ngƣời thiết kế có thể thiết kế theo các thuật toán để mô tả các mạch phức tạp với thời gian mô tả nhanh gọn hơn, việc sửa chữa do đó cũng dễ dàng hơn. Hình 9: Quy trình thiết kế VLSI với công nghệ FPGA [18]. TIEU LUAN MOI download : skknchat@gmail.com 16 Quá trình tổng hợp logic (Synthesis) là quá trình dịch từ các ngôn ngữ mô tả sang dạng mạch điện hoàn chỉnh, còn gọi là dạng netlist.
Nếu trong thiết kế có sử dụng các bản thiết kế các linh kiện phụ trợ thì quá trình tổng hợp cũng tạo ra dạng netlist của các thành phần con này.