Quá trình chế một prototype (mẫu thử) cho một vi mạch ASIC rất đắt và không phải ai cũng làm được. Ví dụ như ở nước ta hiện tại là không thể. Chúng ta chưa có phòng sạch đạt chuẩn, chưa có đủ thiết bị để chế các mạch tích hợp cỡ lớn (khoảng 1 triệu gate trở lên). Vậy nếu chúng ta nghiên cứu về ASIC thì làm thế nào để có được một prototype để kiểm nghiệm.
Một lựa chọn mà hầu hết các cơ sở nghiên cứu đều lựa chọn đó là dùng FPGA. Thậm chí ngay cả những phòng thí nghiệm có sẵn hệ thống sản xuất vi mạch cũng chọn phương án này vì lý do giá thành làm prototype quá cao. Hơn nữa, không ai có thể khằng định rằng chỉ sau một lần làm prototype thì bạn có thể cho ra đời một vi mạch ứng dụng ASIC hoàn hảo được.
Vậy nếu dùng FPGA để làm prototype cho một ứng dụng ASIC thì phải bắt đầu như thế nào? Phải chú ý đến những vấn đề gì ?
Trước hết là chúng ta phải chọn một dòng FPGA phù hợp. Phù hợp ở đây có nghĩa là có hiệu suất đảm bảo đáp ứng cho ứng dụng, có số gate (cổng logic) đủ để xây dựng ứng dụng, có giá thành tối thiểu,.... Tiếp đó, cải tiến một số thiết kế ban đầu (thiết kế cho ASIC) sao cho phù hợp với các điều kiện của FPGA. Đây thực sự là những thử thách lớn đối với các nhà thiết kế.
Chúng ta thử đề cập về vấn đề dung lượng cho phép của FPGA. Năm 2000, một FPGA tại thời điểm này có dung lượng tối đa vào khoảng 100.000 gates trong khi một thiết kế ASIC có dung lượng khoảng 10 đến 100 lần dung lượng FPGA cũng vào thời điểm đó. Do vậy, việc dùng FPGA để làm prototype cho thiết kế ASIC là điều rất khó. Một số nhà nghiên cứu đã thực hiện theo cách chia nhỏ thiết kế ASIC ra thành các mô đun và tiến hành làm prototype cho từng mô đun. Đây cũng là một cách để giải quyết bài toán làm prototype nhưng không triệt để. Một số ứng dụng đòi hỏi các mô đun phải được test đồng thời. Vấn đề này làm cho người ta nghĩ ngay đến việc kết hợp nhiều FPGA lại với nhau. Giả thiết và thực tế cho thấy, một thiết kế ASIC thường có dung lượng lớn hơn dung lượng của FPGA khoảng 10 lần. Với một phép tính đơn giản chúng ta thấy rằng cần ít nhất 10 FPGA kết nối với nhau theo môt cách nào đó để thực hiện một prototype ASIC.
Tuy nhiên, vấn đề không dừng ở dung lượng FPGA. Trong thiết kế ASIC, kết nối giữa các mô đun được tính bằng số lượng các bus có độ rộng rất lớn (thường gấp 2-3 lần so với độ rộng bus trên FPGA). Do đó, kết nối giữa các FPGA không thể đáp ứng được vì số lượng này quá bé.
Một vài phương pháp đã được đưa ra như thiết lập các ma trận chuyển mạch, cấu trúc bus chung, mạng chuyển mạch,... Môi phương án có ưu và nhược điểm riêng của nó. Chẳng hạn nếu dùng một vi mạch để thiết lập kết nối thì ưu điểm dễ thấy là làm giảm được số kết nối vật lý theo yêu cầu, có độ mềm dẻo cao,... nhưng nhược điểm dễ nhận thấy là lập trình kết nối phức tạp, trễ kết nối cao,... chưa kể đến những trường hợp lỗi kết nối.
Một lựa chọn mà hầu hết các cơ sở nghiên cứu đều lựa chọn đó là dùng FPGA. Thậm chí ngay cả những phòng thí nghiệm có sẵn hệ thống sản xuất vi mạch cũng chọn phương án này vì lý do giá thành làm prototype quá cao. Hơn nữa, không ai có thể khằng định rằng chỉ sau một lần làm prototype thì bạn có thể cho ra đời một vi mạch ứng dụng ASIC hoàn hảo được.
Vậy nếu dùng FPGA để làm prototype cho một ứng dụng ASIC thì phải bắt đầu như thế nào? Phải chú ý đến những vấn đề gì ?
Trước hết là chúng ta phải chọn một dòng FPGA phù hợp. Phù hợp ở đây có nghĩa là có hiệu suất đảm bảo đáp ứng cho ứng dụng, có số gate (cổng logic) đủ để xây dựng ứng dụng, có giá thành tối thiểu,.... Tiếp đó, cải tiến một số thiết kế ban đầu (thiết kế cho ASIC) sao cho phù hợp với các điều kiện của FPGA. Đây thực sự là những thử thách lớn đối với các nhà thiết kế.
Chúng ta thử đề cập về vấn đề dung lượng cho phép của FPGA. Năm 2000, một FPGA tại thời điểm này có dung lượng tối đa vào khoảng 100.000 gates trong khi một thiết kế ASIC có dung lượng khoảng 10 đến 100 lần dung lượng FPGA cũng vào thời điểm đó. Do vậy, việc dùng FPGA để làm prototype cho thiết kế ASIC là điều rất khó. Một số nhà nghiên cứu đã thực hiện theo cách chia nhỏ thiết kế ASIC ra thành các mô đun và tiến hành làm prototype cho từng mô đun. Đây cũng là một cách để giải quyết bài toán làm prototype nhưng không triệt để. Một số ứng dụng đòi hỏi các mô đun phải được test đồng thời. Vấn đề này làm cho người ta nghĩ ngay đến việc kết hợp nhiều FPGA lại với nhau. Giả thiết và thực tế cho thấy, một thiết kế ASIC thường có dung lượng lớn hơn dung lượng của FPGA khoảng 10 lần. Với một phép tính đơn giản chúng ta thấy rằng cần ít nhất 10 FPGA kết nối với nhau theo môt cách nào đó để thực hiện một prototype ASIC.
Tuy nhiên, vấn đề không dừng ở dung lượng FPGA. Trong thiết kế ASIC, kết nối giữa các mô đun được tính bằng số lượng các bus có độ rộng rất lớn (thường gấp 2-3 lần so với độ rộng bus trên FPGA). Do đó, kết nối giữa các FPGA không thể đáp ứng được vì số lượng này quá bé.
Một vài phương pháp đã được đưa ra như thiết lập các ma trận chuyển mạch, cấu trúc bus chung, mạng chuyển mạch,... Môi phương án có ưu và nhược điểm riêng của nó. Chẳng hạn nếu dùng một vi mạch để thiết lập kết nối thì ưu điểm dễ thấy là làm giảm được số kết nối vật lý theo yêu cầu, có độ mềm dẻo cao,... nhưng nhược điểm dễ nhận thấy là lập trình kết nối phức tạp, trễ kết nối cao,... chưa kể đến những trường hợp lỗi kết nối.
Comment