GIỚI THIỆU
Tổng quan
Trong hơn nhiều thập niên qua, phương pháp thiết kế đồng bộ chiếm ưu thế trong ngành vi mạch điện tử, các kỹ sư thiết kế phải đối mặt với hàng loạt thử thách Như được nhấn mạnh của các chuyên gia hàng đầu về công nghệ bán dẫn trong tài liệu “Lộ trình công nghệ bán dẫn quốc tế (ITRS)”, các thử thách đó liên quan đến tác động của sự biến đổi gia tăng, công suất, nhiệt, tỉ lệ lỗi kể cả lỗi mềm, vấn đề mở rộng qui mô, vì các chip hiện nay đang nhắm tới mục tiêu hàng tỉ transistor và cấu trúc đa lõi [1]
Trong khi mô hình đồng bộ đã chiếm ưu thế trong vài thập kỷ qua thì thiết kế bất đồng bộ hoặc là thành phần lai giữa đồng bộ và bất đồng bộ cung cấp tiềm năng cho hệ thống phần cứng phân tán theo hướng đối tượng, hệ thống này hỗ trợ thành phần module, thành phần mở rộng, hoạt động theo yêu cầu mà không cần sự quản lý năng lượng thiết bị rộng rãi và thiết kế chịu được sự thay đổi Như được nhấn mạnh bởi ITRS, mô hình bất đồng bộ được xem là thành phần quan trọng để giải quyết các thử thách trên
Thiết kế bất đồng bộ thì không mới, nó đã mang lại nhiều lợi ích cho nhiều công ty điện tử hàng đầu thế giới Vào cuối năm 1990 và đầu năm 2000, Philips Semiconductors đã thành công về thương mại với các bộ vi điều khiển bất đồng bộ 80C51 Một phiên bản nâng cao của nó là SmartMX được sử dụng rộng rãi trên 75 quốc gia kể cả Châu âu và Mỹ Năm 2011, Fulcrum Microsystems được Intel mua lại bộ startup bất đồng bộ để sản xuất dòng chip mạng tốc độ cao, các chuyên gia phân tích coi đây là nỗ lực để cạnh tranh với sản phẩm của Cisco Dòng chip chuyển mạch FM5000/FM6000 hỗ trợ Ethernet 40 gigabit bao gồm một Crossbar switch tốc độ cao hoàn toàn bất đồng bộ, cung cấp độ rộng băng thông cao, trễ thấp và hỗ trợ liên kết hệ thống linh hoạt Một ví dụ khác về sự thương mại hóa sản phẩm bất đồng bộ là họ Speedster 22i của FPGA được sản xuất bởi Achronix Semiconductor Đây là ứng dụng của FPGA hiệu suất cao, được sản xuất bằng công nghệ 22nm, chip này có thể hoạt động ở tần số 1.5GHz Một ví dụ thú vị khác là TrueNorth, được phát hành vào tháng 8 năm 2014, đây là chip lớn nhất từng được phát triển tại IBM, với 5,4 tỷ transistor Dòng
2 chip này tích hợp 4096 lõi thần kinh trên một chip đơn, cấu hình 1 triệu nơ-ron và 256 triệu khớp thần kinh Quy mô tích hợp này đặt ra một thách thức về thiết kế vật lý phức tạp, đã được đáp ứng thành công bằng cách sử dụng mạng kết nối và các yếu tố xử lý hoàn toàn bất đồng bộ
Trong thực tế đã có một vài thử nghiệm công nghiệp với thiết kế bất đồng bộ, mặc dù các thử nghiệm này khá thành công nhưng không xuất hiện trong các sản phẩm thương mại chẳng hạn như bộ lọc FIR của IBM được thực hiện dưới hình thức lai giữa hỗn hợp đồng bộ và bất đồng bộ Kết quả thử nghiệm cho thấy giảm được 50% trễ trường hợp xấu nhất và cải thiện được thông lượng Ngoài các mục tiêu thiết kế cổ điển, một số ứng dụng mới xuất hiện mà thiết kế bất đồng bộ đã sẵn sàng tạo ra tác động, điển hình nhất là trong việc tích hợp nhiều thành phần có các miền định thời riêng biệt vào trong một thành phần thì bất đồng bộ nhất thiết xảy ra cụ thể trong các bộ vi xử lý nhiều lõi, SoC, hệ thống GALS Ngoài ra, nhiều ứng dụng khác mới xuất hiện khác hệ thống năng lượng cực thấp và thu hoạch năng lượng, các bộ xử lý tín hiệu số thời gian liên tục, điều khiển trong môi trường khắc nghiệt, mô hình điện toán thay thế
Trong các mạch bất đồng bộ, khái niệm cơ bản về định thời chính là độ trễ Mọi thành phần thiết kế số được sử dụng trong thiết kế đều có độ trễ vốn có Toàn bộ hành vi của mạch thường được mô hình hóa bằng các mô hình trễ để định thời Các mô hình này có tính đến độ trễ của cổng, dây hoặc cả hai Khoảng cách ngày càng tăng giữa các mô hình trễ của dây và trễ của cổng khi chúng ta chuyển sang các công nghệ DSM (Deep Sub-Micron) Việc khoảng cách ngày càng tăng đã tạo thêm động lực cho các phương pháp thiết kế mà không phụ thuộc vào định thời Trong trường hợp không có xung nhịp, các mạch bất đồng bộ được thiết kế không có giả định về độ trễ Nguyên tắc chung là đảm bảo rằng mạch hoạt động chính xác trong điều kiện độ trễ cổng và dây khác nhau Tùy thuộc vào giả định thời gian trễ của dây và cổng, các thiết kế mạch bất đồng bộ được phân thành hai nhóm mô hình chính là mô hình mạch có trễ bị giới hạn và mô hình mạch gần như không nhạy với trễ [2]
1.1.1 Mô hình mạch có trễ bị giới hạn
Trong nhóm mô hình này, giả định trễ qua cổng và dây bị giới hạn, điều đó có nghĩa là mỗi cổng và dây sẽ được gán một giá trị giới hạn của các giá trị trễ, mô hình
3 giả định cho tất cả mọi hoạt động, giá trị trễ chỉ rơi vào trong giới hạn đó, các trễ này được đưa vào dựa trên tình huống xấu nhất để tránh điều kiện nguy hiểm (hazard conditions) Do đó, các mô hình có trễ bị giới hạn thường được thực hiện thông qua luồng dữ liệu được điều khiển bởi các ràng buộc định thời cục bộ cho trường hợp xấu nhất Tín hiệu req phải được trì hoãn một khoảng thời gian đủ dài cho tới khi tất cả tín hiệu hợp lệ và ổn định Nhìn chung, tất cả các mô hình có trễ bị giới hạn hoạt động theo kiểu đồng bộ và cho hiệu quả mã hóa tốt nhưng yêu cầu phải phân tích định thời trường hợp xấu nhất
1.1.2 Mô hình gần như không nhạy với độ trễ QDI (Quasi Delay Insensitive)
Các mạch QDI cho phép trễ cổng và dây tùy ý nhưng nó áp đặt một giả định về isochronic của nhánh để tránh hazard và glitch không mong muốn Giả định này nằm bên trong các thành phần cơ bản của mạch như bộ cộng, độ lệch thời gian được tạo ra bởi độ trễ của dây ít hơn nhiều so với độ trễ cổng, vì thế độ trễ cho tất cả các đầu cuối của các dây nhánh là tương tự nhau Thông thường, các giả định về isochronic của nhánh đạt được ở thiết kế cấp cổng của các thành phần cơ bản Điều quan trọng cần lưu ý là ở cấp độ kết nối thành phần, độ trễ dây không cần tuân thủ giả định này, vì dữ liệu đầu vào có thể được kiểm soát bằng các mạch phát hiện hoàn thành Do đó, các mạch QDI cần rất ít việc phân tích định thời và có thể đạt được hiệu suất trung bình thay vì hiệu suất trong trường hợp xấu nhất như các mô hình trễ bị giới hạn Trong việc triển khai, các mạch QDI thông thường sử dụng sơ đồ mã hóa nhiều dây để truyền dữ liệu Hình 1.2 minh họa cho sơ đồ mã hóa dual-rail, điều đó có nghĩa là sử dụng hai dây để mã hóa cho một bit nhị phân Dữ liệu chính nó tự nhận dạng nó hợp lệ hay không nên dây tín hiệu Req được bỏ qua [3]
Trong thiết kế mạch QDI, hầu hết các phương pháp tiếp cận ban đầu chỉ sử dụng cổng phần tử C và mạch Boolean để có được độ nhạy trễ lý tưởng DIMS (Delay Insensitive Minterm Synthesis) [1] là một ví dụ điển hình Ngược lại, Null Convention Logic (NCL) xác định trước 27 cổng giữ trạng thái trễ cơ bản cho thiết kế mạch, do đó, NCL cung cấp khả năng tối ưu hóa tốt hơn [4] Ví dụ, cổng AND hai ngõ vào sẽ yêu cầu 56 transistor bán dẫn, 5 cổng và trễ qua 2 cấp cổng nếu được triển khai trong DIMS,
4 trong khi đó, chỉ cần 31 transistor bán dẫn, 2 cổng và trễ qua 1 cấp cổng nếu được triển khai trong NCL [5]
Bên cạnh các cách tiếp cận giống như DIMS, một nhóm phương pháp khác được sử dụng để thiết kế các mạch QDI dựa trên ngôn ngữ lập trình Hoare’s CSP (Communicating Sequential Processes) Tangram [6], và Balsa [7] là những cách tiếp cận như vậy Những nhóm tiếp cận này là các ngôn ngữ dựa trên CSP dành cho thiết kế bất đồng bộ và cung cấp các công cụ chuyên dụng để tổng hợp các thiết kế thành netlist của các thành phần bắt tay Thành phần bắt tay là sự triển khai mạch của một cấu trúc ngôn ngữ, chẳng hạn như lập trình tự và lặp lại [8], được tạo ra để mô tả mạch bất đồng bộ Về ngôn ngữ thiết kế, Tangram, Haste và Balsa, dựa trên CSP, là các ngôn ngữ lập trình đồng thời thuật toán cấp cao, hoàn toàn khác với các ngôn ngữ phần cứng hiện tại như VHDL và Verilog Hơn nữa, các cách tiếp cận này thường không thể tạo ra các mạch bất đồng bộ hiệu suất cao, vì chúng sử dụng phép dịch theo hướng cú pháp để tổng hợp các mạch trực tiếp từ mô tả chức năng [9] Do đó, Null Convention Logic là một trong những phương pháp được quan tâm nhất cho đến nay
Sự phát triển của NCL từ việc thực thi và kiểm tra các mạch NCL trên Field Programmable Gate Array (FPGA) [10-14] Một số thư viện cấu trúc Complementary Mental Oxide Semiconductor (CMOS) [13-16] và các công cụ tự động “gate mapping” [17,18] đã được phát triển cho NCL Thêm vào đó, các kỹ thuật DFT (Design For Test) [19] cho mạch NCL đã được khám phá ra Ngoài ra, kỹ thuật thiết kế cổng NCL mới được nghiên cứu đã cho hiệu suất vượt trội so với phương pháp thiết kế NCL bằng CMOS tĩnh và bán tĩnh truyền thống [20] Tuy nhiên, việc tổng hợp các thiết kế bất đồng bộ dựa trên NCL vẫn còn là vấn đề gây khó khăn lớn đối với các nhà nghiên cứu do thiếu các thư viện bất đồng bộ NCL Vì thế, việc nghiên cứu giải pháp để tạo ra thư viện bất đồng bộ NCL vừa đơn giản, dễ hiểu và gần giống với phương pháp đồng bộ nhất là việc rất cần thiết.
Tình hình nghiên cứu trong và ngoài nước
Trong nước, dựa trên các tài liệu được đăng lên như các luận văn, các bài báo,… thì vẫn chưa có tác giả nào đề xuất ra quy trình thiết kế mạch bất đồng bộ NCL từ mạch đồng bộ và quy trình thiết kế thư viện cell NCL
5 Trên thế giới, hiện nay, có một nhóm các nhà khoa học Brazil đang nghiên cứu phát triển thư viện bất đồng bộ NCL Tuy nhiên, việc thực hiện luồng thiết kế thư viện bất đồng bộ đó khá phức tạp và yêu cầu đọc giả phải cài thêm các công cụ của riêng họ
CƠ SỞ LÝ THUYẾT
Null Convention Logic
NCL là mô hình bất đồng bộ không nhạy với trễ, có nghĩa là các mạch NCL sẽ hoạt động chính xác bất kể độ trễ của các thành phần và dây dẫn Các mạch NCL sử dụng logic dual-rail hoặc logic quad-rail để đạt được độ không nhạy với trễ Trong suốt luận văn này, các thiết kế sử dụng logic dual-rail Phần này sẽ giải thích các vấn đề cơ bản của NCL, chẳng hạn như các thành phần được sử dụng để xây dựng các mạch NCL, các tiêu chí mà mỗi và mọi thành phần của tín hiệu dual-rail NCL phải có
NCL sử dụng hai tiêu chuẩn hoàn thành để đạt được hành vi không nhạy với trễ: tính hoàn thành về mặt biểu tượng của biểu thức và tính hoàn thành của đầu vào Một biểu thức hoàn thành về mặt ký tự được định nghĩa là một biểu thức chỉ phụ thuộc vào mối quan hệ của các ký tự được biểu diễn trong biểu thức Tín hiệu dual-rail với ba trạng thái logic (NULL, DATAO và DATA1) được sử dụng để đạt được tính hoàn thành ký tự của biểu thức Tín hiệu dual-rail D bao gồm hai dây, D 0 và D 1 Giá trị của tín hiệu dual-rail được biểu thị bằng một giá trị từ tập {DATAO, DATA1, NULL}, được hiển thị trong Bảng 2.1 Trạng thái DATA0 (D 0 = l (cao), D 1 = 0 (thấp)) tương ứng với logic Boolean 0 Trạng thái DATA1 (D 0 = 0 (thấp), D 1 = l (cao)) tương ứng với logic Boolean
1 Trạng thái Null (D 0 = 0 (thấp), D 1 = 0 (thấp)) tương ứng với trạng thái không có dữ liệu Trạng thái D 0 = l (cao) và D 1 = l (cao) là trạng thái bị cấm
7 Bảng 2 1 Mã hóa tín hiệu dual-rail
Tiêu chí thứ hai, tính hoàn thành của đầu vào, phát biểu rằng đối với mạch tổ hợp NCL
1) Ngõ ra không được chuyển từ NULL sang một bộ DATA hoàn thành cho đến khi các giá trị đầu vào hoàn toàn là DATA
2) Ngõ ra không thể chuyển từ DATA sang bộ hoàn thành các giá trị NULL cho đến khi các giá trị đầu vào hoàn toàn là NULL
Tiêu chí này, tương đương với điều kiện yếu của Seitz, được minh họa trong Hình 2.1 Tiêu chí này là điều kiện cần thiết để tốc độ độc lập Các thứ tự được dán nhãn trong Hình 2.1 được giải thích dưới đây
Hình 2 1Điều kiện yếu cho sự hoàn thành ngõ vào của NCL [12]
8 (1) Một số ngõ vào trở thành DATA trước khi một số ngõ ra trở thành DATA
(2) Tất cả các ngõ vào trở thành DATA trước khi tất cả các ngõ ra trở thành DATA (3) Tất cả các ngõ ra trở thành DATA trước khi một số ngõ vào trở thành NULL (4) Một số ngõ vào trở thành NULL trước khi một số ngõ ra trở thành NULL
(5) Tất cả các ngõ vào trở thành NULL trước khi tất cả các ngõ ra trở thành NULL (6) Tất cả các ngõ ra trở thành NULL trước khi một số ngõ vào trở thành DATA
Một ngõ ra được gọi là ngõ vào hoàn chỉnh ứng với một ngõ vào cụ thể nếu giá trị ngõ ra (DATA) đó không xuất hiện cho đến khi giá trị ngõ vào (DATA) xuất hiện Ngõ vào này được gọi là ngõ vào hoàn chỉnh của ngõ ra cụ thể đó Một mạch tổ hợp được gọi là có ngõ vào hoàn chỉnh khi và chỉ khi mỗi ngõ vào của mạch có ít nhất một ngõ ra mà hoàn chỉnh đối với ngõ vào đó
2.1.2 Cổng ngưỡng có độ trễ
NCL sử dụng một loại cổng đặc biệt, cụ thể là cổng ngưỡng có độ trễ [21, 22] Tên chung của cổng ngưỡng cơ bản được mô tả là thmnwK1K2…Kn, trong đó 'th' có nghĩa là cổng ngưỡng, m là ngưỡng, n là số ngõ vào, W có nghĩa là trọng số, giá trị ' K1 ',' K2
', ' Kn' lần lượt là các trọng số của các ngõ vào, mặc định giá trị trọng số là 1 Một số cổng ngưỡng được thể hiện trong Hình 2.2 Trong một số cổng ngưỡng có thể có biến thể cho ngõ ra được set, reset hoặc lấy đảo Trong trường hợp đó, có thể đính kèm chữ
‘d’, ‘n’ hoặc ‘b’ có thể được gắn vào tên của cổng ngưỡng Ví dụ, th22n là một cổng th22 với ngõ vào điều khiển ‘reset’, ngõ ra có thể được khởi tạo ở mức thấp miễn khi tín hiệu reset được kích hoạt Tương tự, ‘d’ được sử dụng để khởi tạo ngõ ra ở mức cao và ‘b’ chỉ ra rằng ngõ ra được tích hợp thêm cổng đảo
9 Hình 2 2 Các cổng ngưỡng khác nhau
Hành vi ngưỡng của cổng yêu cầu ngõ ra trở thành 1 nếu ít nhất m trong số n ngõ vào đã trở thành 1 Hành vi trễ yêu cầu ngõ ra chỉ thay đổi sau khi đã thiết lập đủ các giá trị ngõ vào Trong trường hợp chuyển đổi từ 0 sang 1, ngõ ra vẫn ở mức 0 cho đến khi ít nhất m ngõ vào trở thành 1 Trong trường hợp chuyển đổi từ 1 sang 0, ngõ ra vẫn ở mức 1 cho đến khi tất cả n ngõ vào trở thành 0 Độ trễ trong mỗi cổng NCL đảm bảo rằng tất cả các ngõ vào phải chuyển qua NULL trước khi ngõ ra của mạch tổ hợp sẽ chuyển sang NULL, làm cho ngõ vào mạch hoàn thành đối với NULL, giả sử rằng mạch hoàn thành ngõ vào đối với DATA Các cổng này là các thành phần cơ bản mà trên đó tất cả các thành phần thiết yếu tạo nên các đường ống (pipeline) NCL
27 cổng ngưỡng cơ bản trong thư viện thiết kế NCL, trong Bảng 2.2, tạo thành tập hợp tất cả các hàm bao gồm bốn biến hoặc ít hơn
10 Bảng 2 2 Hai mươi bảy cổng NCL cơ bản và hàm Boolean tương ứng
NCL gate Boolean Function th12 A + B th22 AB th13 A + B + C th23 AB + AC + BC th33 ABC th23w2 A + BC th33w2 AB + AC th14 A + B + C + D th24 AB + AC + AD + BC + BD + CD th34 ABC + ABD + ACD + BCD th44 ABCD th24w2 A + BC + BD + CD th34w2 AB + AC + AD + BCD th44w2 ABC + ABD + ACD th34w3 A + BCD th44w3 AB + AC + AD th24w22 A + B + CD th34w22 AB + AC + AD + BC + BD th44w22 AB + ACD + BCD th54w22 ABC + ABD th34w32 A + BC + BD th54w32 AB + ACD th44w322 AB + AC + AD + BC th54w322 AB + AC + BCD thxor0 AB + CD thand0 AB + BC + AD th24comp AC + BC + AD + BD
Cấu trúc cho các hệ thống NCL bao gồm logic tổ hợp không nhạy với trễ và mạch phát hiện hoàn thành được kẹp giữa các thanh ghi không nhạy với trễ Sự kết hợp giữa các thanh ghi NCL này cùng với mạch phát hiện hoàn thành và logic tổ hợp được gọi là NCL pipeline [23] Vì vậy, các thành phần cơ bản của bất kỳ mạch hoặc hệ thống NCL nào cũng là các thanh ghi NCL, mạch phát hiện hoàn thành và logic tổ hợp NCL như exor, bộ cộng toàn phần, v.v
Các cặp DATA và NULL đi qua từng thành phần trong đường ống NCL liên tiếp Sự hiện diện của NULL được sử dụng làm thời gian tham chiếu trong các mạch NCL Yêu cầu ngõ vào cho mỗi thanh ghi xuất phát từ mạch phát hiện hoàn thành của thanh ghi tiếp theo Giả sử rằng tất cả các mạch đều ở trạng thái NULL và các tín hiệu yêu cầu ngõ vào của thanh ghi hiện tại (Kic) và thanh ghi tiếp theo (Kin) đang yêu cầu DATA và thanh ghi trước đó hiển thị một bộ DATA hoàn thành đối với mạch tổ hợp của nó Khi mặt sóng truyền qua mạch tổ hợp trước đó đến thanh ghi hiện tại, thanh ghi hiện tại chuyển dữ liệu do dòng điều khiển của nó đang yêu cầu DATA Khi một bộ dữ liệu hoàn chỉnh được nhận ra bởi mạch phát hiện hiện tại, mạch phát hiện hoàn thành sẽ chuyển dòng điều khiển (KiP) sang thanh ghi trước để yêu cầu NULL chỉ ra rằng thanh ghi hiện tại đã nhận và lưu trữ dữ liệu và thanh ghi trước đó có thể nhận NULL Mặt sóng NULL được yêu cầu từ thanh ghi trước có thể đến thanh ghi hiện tại, nhưng miễn là dòng điều khiển (thanh ghi hiện tại) đang yêu cầu DATA, mặt sóng NULL sẽ bị chặn và thanh ghi hiện tại sẽ duy trì bộ DATA cho mạch tổ hợp hiện tại Dòng điều khiển cho thanh ghi hiện tại sẽ vẫn yêu cầu DATA cho đến khi mặt sóng DATA được truyền qua mạch hiện tại và đã được nhận bởi thanh ghi tiếp theo Khi thanh ghi tiếp theo nhận và lưu trữ mặt sóng DATA, bộ DATA không còn cần được duy trì bởi thanh ghi hiện tại Mạch phát hiện hoàn chỉnh tiếp theo phát hiện bộ DATA hoàn chỉnh và chuyển đổi dòng xác nhận của nó (Kic) để yêu cầu NULL chỉ ra rằng nó đã nhận được mặt sóng DATA và thanh ghi hiện tại có thể cho phép mặt sóng NULL Đây là toàn bộ hoạt động của toàn bộ đường ống NCL
12 Các hệ thống NCL chứa ít nhất hai thanh ghi không nhạy với trễ, một ở đầu vào và một ở đầu ra Hai tầng thanh ghi liền kề tương tác thông qua các tín hiệu yêu cầu và xác nhận; Ki và Ko, tương ứng, để ngăn mặt sóng DATA hiện tại ghi đè lên mặt sóng DATA trước đó, bằng cách đảm bảo rằng hai mặt sóng DATA luôn được phân tách bằng mặt sóng NULL
Hình 2 3 Thanh ghi NCL 1 bit
Hình 2.3 cho thấy một thanh ghi NCL 1 bit Một thanh ghi n-bit được thực hiện thông qua các sắp xếp cascade của n các thanh ghi dual-rail, 1 bit Mỗi thanh ghi NCL 1 bit được sử dụng trong suốt luận văn bao gồm hai cổng th22n chỉ cho phép truyền giá trị DATA ở đầu vào khi Ki (tín hiệu yêu cầu) ở mức logic 1 và chỉ truyền NULL khi Ki ở mức logic 0 Thanh ghi này cũng chứa một cổng th12b có hai ngõ vào, một trong số đó được kết nối với ngõ ra của một trong hai cổng th22n và ngõ vào còn lại được kết nối với ngõ ra của cổng th22n còn lại Ngõ ra của th12b được ký hiệu là Ko, tín hiệu xác nhận của thanh ghi 1 bit Ko trở thành logic 0 khi thanh ghi nhận DATA hoàn toàn và có logic 1 khi thanh ghi nhận NULL Các tín hiệu xác nhận của mỗi thanh ghi 1 bit trong thanh ghi n bit được kết hợp trong mạch phát hiện hoàn chỉnh để tạo tín hiệu yêu cầu đến thanh ghi trước đó Tín hiệu yêu cầu Ki của thanh ghi hiện tại là ngõ ra của mạch phát hiện hoàn thành của thanh ghi tiếp theo Khi tín hiệu reset ở ngõ vào ở mức cao, cả hai cổng th22 trong thanh ghi 1 bit được reset thành NULL, thanh ghi sẽ xuất ra Null Tuy nhiên, một trong hai thanh ghi có thể được reset thành giá trị DATA bằng
Cấu trúc cổng ngưỡng NCL ở cấp transistor
Hiện nay, có 3 cấu trúc cổng ngưỡng NCL khác nhau được sử dụng phổ biến nhằm mục đích nghiên cứu là tĩnh, bán tĩnh và động Phần này về cơ bản là để hiểu các khái niệm về cổng ngưỡng ở cấp độ transistor
Mô hình cổng ngưỡng NCL tĩnh được thực hiện bằng công nghệ CMOS, bao gồm 5 khối cơ bản: Go to NULL, Go to DATA, hold NULL, hold DATA và cổng đảo ở ngõ ra được trình bày trong Hình 2.6
Hình 2 6 Cấu trúc chung của cổng ngưỡng tĩnh
16 Các khối Go to NULL và Hold DATA có cấu trúc bù lẫn nhau và có các hình dạng đặc biệt được hiển thị trong hình 2.7 Khối Go to NULL chỉ ON khi tất cả N ngõ vào là 0 và khối Hold DATA chỉ ON nếu một hoặc nhiều đầu vào là 1 Vì chuỗi nối tiếp trong khối Go to NULL nên việc đảm bảo tốc độ sẽ giới hạn các cấu trúc này ở số lượng tối đa ngõ vào, thường ít hơn sáu Tương tự khối go to DATA và khối hold NULL là bù lẫn nhau nhưng cấu trúc chính xác của chúng phụ thuộc vào giá trị ngưỡng m Đơn giản nhất bắt đầu bằng trường hợp đặc biệt m = n Cấu trúc tổng quát của cổng ngưỡng tĩnh có n ngõ vào và ngưỡng là n được trình bày trong Hình 2.8
Hình 2 7 Khối transistor a) Go to NULL b) Hold DATA
Hình 2 8 Cấu trúc cổng ngưỡng NCL tĩnh tổng quát thnn
17 Để phân tích hoạt động của nó, giả sử bắt đầu với tất cả ngõ vào ở trạng thái 0 Trong trường hợp này khối Go to NULL và khối Hold NULL ở trạng thái ON, ngõ ra
Z sẽ ở trạng thái logic 0, do đó tất cả transistor PMOS trong mạng kéo lên sẽ ở trạng thái ON Ở cùng thời điểm đó, khối Go to DATA và khối Hold DATA ở trạng thái OFF, tất cả các transistor NMOS trong mạng kéo xuống cũng ở trạng thái OFF Nếu một trong các ngõ vào lên mức 1 thì khối Go to NULL sẽ chuyển sang trạng thái OFF và khối Hold DATA vẫn ở trạng thái ON Tuy nhiên, ngõ ra Z vẫn không thay đổi trạng thái bởi vì khối Hold NULL vẫn ở trạng thái ON và nó vẫn duy trì kết nối của điểm trung gian với nguồn VDD Ngõ ra sẽ thay đổi chỉ khi tất cả ngõ vào lên mức 1 Ở thời điểm đó khối Hold NULL sẽ OFF và khối Go to DATA ở trạng thái ON và làm cho ngõ ra ở trạng thái DATA Sau đó chúng ta gặp phải tình huống mà tất cả các transistor PMOS ở mạng kéo lên đều OFF và tất cả các transistor NMOS trong mạng kéo xuống đều ON Do cấu trúc mạch đối xứng nên hoạt động tương tự sẽ xãy ra khi ngõ ra trở lại trạng thái NULL
Trong trường hợp ngưỡng m nhỏ hơn số ngõ vào n thì cấu trúc của khối Go to DATA và Hold NULL sẽ được xác định riêng cho mỗi trường hợp Ví dụ về cổng ngưỡng th23 có các ngõ vào A, B và C như Hình 2.9
Cần lưu ý rằng các khối Go to Null và Hold DATA ở dạng chuẩn của nó, cấu trúc của các khối còn lại có được theo sự phân tích sau: đầu tiên bắt đầu bằng khối Go to DATA, khối này ở trạng thái ON khi 2 trong 3 ngõ vào lên mức 1 Biểu thức logic mô tả cho nguyên lý hoạt động của cổng được biểu diễn trong (2.1)
Cấu trúc của khối Go to DATA có nguồn gốc trực tiếp từ biểu thức (2.1) bằng cách sử dụng nguyên tắc thông thường để xây dựng mạng chuyển mạch của các transistor NMOS Vì khối Hold NULL là bù với khối này, biểu thức mô tả của nó có được bằng cách lấy bù biểu thức (2.1) ở trên và đơn giản bằng cách sử dụng luật DeMorgan như sau:
Sơ đồ nguyên lý của khối Hold NULL trong Hình 2.9 được xây dựng trực tiếp bằng cách dựa vào biểu thức cuối cùng của𝑓(𝐴, 𝐵)̅̅̅̅̅̅̅̅̅̅(biểu thức (2.2)) bằng cách sử dụng các luật thông thường để xây dựng các mạng chuyển mạch PMOS Lưu ý, phương trình của𝑓(𝐴, 𝐵)̅̅̅̅̅̅̅̅̅̅cho thấy khối Hold NULL sẽ ON khi có ít nhất 2 trong số 3 ngõ vào ở mức
0 Tương tự như vậy đối với cấu trúc của khối Go to NULL và Hold DATA
Hình 2 9 Cổng th23 tĩnh 2.2.2 Cấu trúc bán tĩnh
Cấu trúc tổng quát của cổng ngưỡng bán tĩnh thmn [24] trình bày trong Hình 2.10 gồm 3 khối chính: khối Go to NULL, khối Go to DATA và khối cổng đảo có hồi tiếp ở ngõ ra để duy trì thông tin trạng thái Do đó, cổng này không yêu cầu tốc độ tối thiểu của ngõ vào vì nó có thể giữ trạng thái ngõ ra vô thời hạn Thông tin trạng thái được duy trì thông qua cổng đảo hồi tiếp yếu Cổng đảo này có nhiệm vụ bù lại dòng rò có tác dụng xả điện cho điểm Y khi cả hai khối Go to NULL và Go to DATA ở trạng thái OFF Kích thước cổng đảo hồi tiếp yếu thích hợp là điều cần thiết cho hoạt động
19 chính xác của cổng bán tĩnh Nếu cộng đảo hồi tiếp ở ngõ ra quá yếu, nó sẽ không thể bù được dòng rò ở nút bên trong và do đó, điện tích ở nút bên trong Y sẽ bị rò rỉ và ngõ ra cổng Z có thể trở nên không hợp lệ hoặc chuyển đổi giá trị hoàn toàn Ngược lại, nếu bộ đảo hồi tiếp ở ngõ ra không đủ yếu thì nó sẽ yêu cầu dòng điện lớn từ mạch kéo lên hoặc kéo xuống để chuyển đổi trạng thái ở ngõ ra Trong trường hợp này, ngõ ra của cell có thể bị kẹt ở mức 1 hoặc mức 0
Hình 2 10 Cấu trúc tổng quát của cổng ngưỡng bán tĩnh
Hình 2 11 Mạch nguyên lý của cổng ngưỡng bán tĩnh NCL th23
Ví dụ về cổng ngưỡng bán tĩnh th23 được trình bày trong Hình 2.11, cấu trúc của các transistor NMOS ở mạng kéo xuống có nguồn gốc từ dạng nguyên thủy và chưa được triển khai trong Bảng 2.2
Trong nhiều ứng dụng tính toán thời gian thực, dòng dữ liệu vào phải luôn liên tục ở một tốc độ tối thiểu Trong tình huống này, không cần thiết để duy trì thông tin trạng thái bằng một cơ cấu hồi tiếp Thay vào đó, sự có mặt hay vắng mặt của điện tích tại điểm cách li có thể duy trì được vài ms mà không phải mất bất kỳ thông tin nào Do đó, đối với các loại ứng dụng này, chúng ta có thể loại bỏ cổng đảo hồi tiếp yếu của cấu hình cổng ngưỡng bán tĩnh Mạch kết quả được gọi là cổng ngưỡng động và sơ đồ khối tổng quát của nó được trình bày trong Hình 2.12a Khối Go to NULL và Go to DATA giống các khối tương tự được sử dụng trong cấu hình của cổng ngưỡng bán tĩnh, kể cả việc tối ưu để tối thiểu hóa hiệu ứng dùng chung điện tích
Hình 2 12 a) Mô hình tổng quát của cổng ngưỡng động b) Ví dụ cổng th23
Mạch nguyên lý của cổng ngưỡng động th23 thực hiện bằng các transistor CMOS trên Hình 2.12 giống với cổng ngưỡng bán tĩnh th23 được trình bày trong Hình 2.11 ngoại trừ không có bộ đảo hồi tiếp yếu Khi khối Go to DATA trở thành ON, điểm Y sẽ được xả điện qua các transistor NMOS làm cho ngõ ra được xác nhận Tương tự, khi tất cả các ngõ vào được xác nhận lại, khối Go to NULL sẽ ON, điểm Y sẽ được nạp
21 điện lại qua các transistor PMOS đến điện áp VDD và làm cho ngõ ra được xác nhận lại Trong việc triển khai các cổng ngưỡng động NCL, khối Go to DATA là mạng kéo xuống của các transistor NMOS xuất phát từ các phương trình trong Bảng 2.2 Mặc khác, khối Go to NULL là một chuỗi nối tiếp của các transistor PMOS trong đó một transistor cho mỗi ngõ vào Như vậy, nếu các cổng NCL có cùng số ngõ vào thì có khối
Định dạng file liberty của thư viện
File liberty hay gọi tắt là file lib, là file định dạng tiêu chuẩn công nghiệp được sử dụng để mô tả các cell thư viện của một công nghệ cụ thể nào đó, nó chứa mô hình thời gian và mô hình công suất, diện tích, chức năng, điều kiện hoạt động, … của các cell Về cơ bản, file lib là một tệp mô hình thời gian chứa độ trễ của cell, thời gian chuyển đổi cell, yêu cầu về thời gian setup và thời gian hold của cell File lib được tạo ra và cung cấp cho nhà thiết kế ASIC bởi nhà cung cấp thư viện cell chuẩn như TSMC, UVM, Global Foundries
File liberty của thư viện bất đồng bộ NCL gần giống với file liberty của thư viện đồng bộ, do hiện nay các công cụ tổng hợp thiết kế đều hỗ trợ cho thiết kế đồng bộ nên việc dựa trên định dạng file lib của thiết kế đồng bộ là rất cần thiết Thư viện bất đồng bộ không có các cell latch hoặc flip flop bởi vì chính bản thân các cell NCL đã có khả năng giữ trạng thái (dữ liệu) thông qua các cổng đảo hồi tiếp
Thông tin bên trong file lib có thể được chia thành hai phần chính, trong phần đầu tiên, nó chứa một số thông tin chung cho tất cả các cell tiêu chuẩn được thể hiện ở hình 2.13
23 Hình 2 13 Thông tin chung về file liberty của thư viện cell
Trong phần chung này, file liberty chứa
- Tên thư viện library(lib_name)
- Phiên bản, thời gian thư viện được tạo, loại mô hình delay đang sử dụng
Mô hình delay table_lookup (non-linear delay) sẽ được sử dụng
- Các đơn vị đo (thời gian, công suất, điện áp, dòng điện, điện trở và điện dung)
- Giá trị của điều kiện hoạt động (quá trình, điện áp, nhiệt độ)
Thông thường, để đảm bảo cho mạch hoạt động đúng, các corner luôn được kiểm tra là fast-fast, typical-typical, slow-slow, slow-fast, và fast-slow đối
24 với quá trình, -40 o C, 25 o C và 125 o C cho nhiệt độ và điện áp lấy giá trị điện áp yêu cầu ± 10% Ví dụ, điện áp khi hoạt động bình thường là 1.2V, thì 3 corner đối với điện áp là 1.08V, 1.2V và 1.32V Trong mỗi thư viện, nếu chỉ có một corner được sử dụng thì thông số process sẽ bằng 1
- Các mức ngưỡng để đo các thông số về cell rise, cell fall, rise transition, fall transition
- Phần cuối cùng là thiết lập các thông số mặc định cho thư viện
Trong phần thứ hai của file liberty, nó chứa thông tin cụ thể của mỗi cell được thể hiện ở hình 2.14
Hình 2 14 Thông tin cụ thể về cell Thông tin cụ thể về cell trong file lib chủ yếu là
+ Công suất rò rỉ của cell
+ Chi tiết về các chân được thể hiện ở hình 2.15
- Thông số về công suất rise, fall tương ứng với các tổ hợp có thể có của chân đó
- Thông số về cell rise, cell fall, rise transition, fall transition tương ứng với các tổ hợp có thể có của chân đó
26 Hình 2 15 Thông tin cụ thể về pin của cell
ĐỀ XUẤT QUY TRÌNH THIẾT KẾ MẠCH TỔ HỢP BẤT ĐỒNG BỘ NCL TỪ MẠCH ĐỒNG BỘ
Phân tích yêu cầu thiết kế
Qui trình thiết kế được trình bày trên Hình 3.1 và thuật toán của qui trình này trên hình 3.2 Từ yêu cầu thiết kế, người thiết kế phải tiến hành phân tích để xác định yếu tố nào là biến đầu vào, yếu tố nào là hàm xuất và mối quan hệ logic của chúng Để phân tích đúng cần hiểu và xem xét sâu yêu cầu thiết kế, đây là một công việc khó và quan trọng trong thiết kế
Hình 3 1 Giải thuật thiết kế mạch tổ hợp NCL
28 Hình 3 2 Quy trình thiết kế mạch NCL từ mạch đồng bộ
Lập bảng chân trị
Đầu tiên, lập bảng để mô tả mối quan hệ chức năng tương ứng giữa trạng thái của các biến ngõ vào và trạng thái của các hàm ngõ ra Tiếp theo, thay thế các giá trị
29 logic cho các biến ngõ vào, tức là sử dụng các số nhị phân 0 và 1 để biểu thị các biến ngõ vào tương ứng và ngõ ra Kết quả là bảng chân trị được hình thành.
Tối ưu hóa logic
Tương tự như mạch logic tổ hợp Boolean, nếu số biến đầu vào ít, ta có thể rút gọn biểu thức logic ngõ ra bằng phương pháp rút gọn trực tiếp hoặc các quy tắc rút gọn thông thường Nếu số biến đầu vào lớn thì có thể dùng bìa K (Karnaugh), hoặc có thể áp dụng các kỹ thuật rút gọn khác để xác định biểu thức ngõ ra dưới dạng tổng của các tích đơn giản nhất cho mỗi ngõ ra Tuy nhiên, đối với các hàm NCL, các biểu thức SOP (Sum of Product) được thực hiện cho cả hai hàm ngõ ra tương ứng với rail 1 và rail 0 Lưu ý rằng trạng thái 0 trong bìa K đại diện cho trạng thái logic của rail 0 và trạng thái 1 trong bìa K đại diện cho trạng thái 1 của rail 1 , việc giảm chức năng logic cho rail 0 được thực hiện giống như phương pháp rút gọn cho rail 1
Kiểm tra tính hoàn thành của ngõ vào và khả năng quan sát
Bước này không có trong quy trình thiết kế mạch tổ hợp logic Boolean Sau khi rút gọn các biểu thức ngõ ra, việc đánh giá phải được thực hiện để đảm bảo rằng mạch ngõ vào hoàn thành và có thể quan sát được, bởi vì các mạch tổ hợp NCL phải đáp ứng cả tiêu chí hoàn thành ngõ vào và tiêu chí khả năng quan sát Nếu mạch không đáp ứng các tiêu chí hoàn thành ngõ vào, chúng ta phải thực hiện hiệu chỉnh bằng cách tìm bất kỳ ngõ vào nào mà không có mặt trong các số hạng tích của các biến ngõ ra để xem xét và bổ sung chúng vào các số hạng tích ở một trong các ngõ ra đó Việc bổ sung được thực hiện bằng cách AND số hạng tích đó với logic 1 Logic 1 được tạo ra bằng cách
OR hai dây rail0 và rail1 lại với nhau.
Ánh xạ logic
Các hàm logic ngõ ra có thể được chia thành các nhóm gồm bốn biến hoặc ít hơn để được ánh xạ tới 27 cổng NCL, đồng thời đảm bảo rằng mạch kết quả có thể quan sát được Để giảm thiểu diện tích và độ trễ, cần chia các phương trình ngõ ra sao cho thu được số lượng nhóm tối thiểu, điều này xảy ra khi số lượng của các số hạng tích trong mỗi nhóm là tối đa
Mô phỏng kiểm tra chức năng
Sau khi ánh xạ các biểu thức ngõ ra vào các cổng ngưỡng NCL, các mạch NCL được mô phỏng để kiểm tra các chức năng Nếu kết quả mô phỏng phù hợp, quá trình thiết kế sẽ kết thúc Ngược lại, quá trình thiết kế sẽ quay trở lại bước phân tích các yêu cầu thiết kế.
Thử nghiệm với quy trình thiết kế mạch bất đồng bộ NCL từ mạch tổ hợp đồng bộ
Trong phần này, bộ cộng RCA (Ripple Carry Adder) sẽ được sử dụng làm ví dụ minh họa vì đây là bộ cộng cơ bản và thường được nhiều người sử dụng Bộ cộng RCA được hình thành từ các bộ cộng toàn phần ghép lại, và bộ cộng này sẽ được chuyển từ logic Boolean sang logic NCL
3.7.1 Xác định ngõ vào và ngõ ra
Bảng 3 1 Mô tả cổng của bộ toàn phần
Signal name Input/Output Width (bits)
Y Input 1 cin Input 1 sum Output 1 cout Output 1
Bảng chân trị hiển thị các toán tử logic giữa đầu vào và đầu ra
Bảng 3 2 Bảng chân trị của bộ cộng toàn phần
3.7.3 Tối ưu hóa logic, kiểm tra tính hoàn thành ngõ vào, và khả năng quan sát
Vì số lượng ngõ vào là ba, nên bìa Karnaugh đã được áp dụng
Hình 3 3 Bìa Karnaugh cho tín hiệu cout
Dựa trên bìa Karnaugh trong Hình 3.3, các phương trình của cout được thực hiện trong (3.1) và (3.2)
Bởi vì cout không thỏa mãn với tính hoàn ngõ vào, nên tín hiệu tổng sum phải ở dạng danh định để đảm bảo có mặt đầy đủ với tất cả các ngõ vào X, Y và cin trong mỗi số hạng tích của sum, và được thể hiện trong phương trình (3.3) và (3.4)
Về khả năng quan sát, các tín hiệu sum và cout đều thỏa mãn Các tín hiệu cout chứa X 0 Y 0 , cin 0 X 0 , cin 0 Y 0 , X 1 Y 1 , cin 1 X 1 và cin 1 Y 1 cũng được bao gồm trong (3.1) và
(3.2) Do đó, tín hiệu cout được coi là đầu vào thứ tư của tổng Dựa trên bản đồ
Karnaugh được hiển thị trong Hình 3.4, phương trình (3.3) và (3.4) được đơn giản hóa thành phương trình (3.5) và (3.6) tương ứng
32 Hình 3 4 Bìa Karnaugh cho tín hiệu sum
Trong bước này, 27 cổng ngưỡng NCL được ánh xạ tới phương trình (3.1), (3.2),
(3.5) và (3.6) dẫn đến bộ cộng toàn phần cuối cùng được hiển thị trong Hình 3.5
Hình 3 5 Bộ cộng toàn phần NCL 1 bit
3.7.5 Mô phỏng kiểm tra chức năng
NCL RCA 4 bit được hiển thị trong hình 3.6 được sử dụng để mô phỏng và tổng hợp với thư viện 65nm cell chuẩn
Kiến trúc của bộ cộng RCA đồng bộ và bất đồng bộ NCL 4 bit được thể hiện ở hình 3.6 và 3.7 tương ứng
Hình 3 6 Bộ cộng RCA đồng bộ 4 bit
Hình 3 7 Bộ cộng RCA bất đồng bộ NCL 4 bit
34 Hình 3 8 Kết quả mô phỏng của bộ cộng RCA đồng bộ 4 bit
Hình 3 9 Kết quả mô phỏng của bộ cộng RCA bất đồng bộ NCL 4 bit
Hình 3.8 và 3.9 cho thấy kết quả mô phỏng của bộ cộng, trong đó a và b là đầu vào Cin là tín hiệu mang đầu vào và cout là tín hiệu mang đầu ra, S là viết tắt của sumary Đối với bộ cộng đồng bộ, đầu ra có hiệu lực sau cạnh đồng hồ dương thứ hai, trong khi đầu ra của bộ cộng không đồng bộ xuất hiện ngay lập tức do không có tín hiệu đồng hồ nào được sử dụng Dữ liệu không đồng bộ NCL được xen kẽ với NULL thông qua cơ chế bắt tay, giúp ngăn dữ liệu tiếp theo ghi đè lên nhau
3.7.5.1 Kết quả tổng hợp Bảng 3 3 Kết quả tổng hợp của bộ cộng RCA 4 bit
Max speed (MHz) Synchronous 209.76 26.228 2700 Asynchronous 494.40 9.735 259.067 Ratio
Trong phần này, công cụ Design Compiler (DC) đã được sử dụng để thực hiện tổng hợp các bộ cộng với thư viện công nghệ 65nm của TSMC Kết quả tổng hợp của bộ cộng RCA bất đồng bộ dựa trên NCL và đồng bộ 4 bit được thể hiện tương ứng trong Bảng 3.3
35 Tổng diện tích của bộ cộng RCA bất đồng bộ dựa trên NCL tăng lên 57,57% so với diện tích của bộ cộng RCA đồng bộ Đây là một trong những nhược điểm của mạch bất đồng bộ
Về tốc độ tối đa, bộ cộng bất đồng bộ dựa trên NCL tạo ra độ trễ nhiều hơn so với bộ cộng đồng bộ, dẫn đến tốc độ tối đa của bộ cộng bất đồng bộ RCA giảm 10,422 lần so với tốc độ của bộ cộng đồng bộ
Diện tích và độ trễ của các mạch NCL là nhược điểm đáng kể nhất Điều này là do logic tổ hợp tạo ra các mạch phát hiện trong các thanh ghi NCL làm cho các đường dẫn phản hồi trở nên lớn và cồng kềnh Những nhược điểm này có thể được khắc phục bằng một kỹ thuật thiết kế đặc biệt được trình bày trong [26] Ngoài ra, chúng tôi đã sử dụng các thư viện cell chuẩn thông thường để tổng hợp các thiết kế bất đồng bộ NCL
Do đó, kết quả tổng hợp không thể đạt được ở mức tối ưu nhất Những kết quả này có thể được cải thiện nhiều hơn nữa nếu các thiết kế bất đồng bộ NCL được tổng hợp bởi các thư viện cell NCL
Về mức tiêu thụ năng lượng, bộ cộng RCA đồng bộ tiêu thụ năng lượng gấp 2,693 lần so với bộ cộng RCA bất đồng bộ dựa trên NCL Vì các mạch NCL không sử dụng xung clock nên chúng giảm một lượng lớn công suất chuyển mạch khi xung clock hoạt động
Mặc dù có nhược điểm về diện tích và tốc độ, các mạch bất đồng bộ dựa trên NCL đạt được công suất thấp hơn khi so sánh với các mạch đồng bộ
ĐỀ XUẤT QUI TRÌNH THIẾT KẾ THƯ VIỆN BẤT ĐỒNG BỘ NCL
Giới thiệu tổng quan về quy trình thiết kế thư viện cell NCL
Trong lĩnh vực thiết kế vi mạch, các thiết kế theo hướng full-custom đều rất phức tạp và tốn thời gian, do đó, hầu hết các thiết kế đều được thực hiện theo hướng semi- custom Thành phần chính trong thiết kế semi-custom là thư viện cell chuẩn dựa trên bộ PDK (Process Design Kit) chuẩn theo một qui trình công nghệ Ở các nước đang phát triển như Việt Nam, nó là một thách thức lớn để tiếp cận với thiết kế theo hướng semi-custom trong giáo dục và đào tạo tại các trường đại học do vấn đề chi phí hoặc license của nó [27] Trong quá trình nghiên cứu về NCL, nhiều sinh viên cũng gặp phải những khó khăn trong việc tổng hợp các thiết kế bất đồng bộ dựa trên NCL bởi họ không có được bộ PDK và bộ thư viện chuẩn, phù hợp và đáng tin cậy Nhiều nghiên cứu về thiết kế vi mạch bất đồng bộ dựa trên NCL đã được thực hiện, tuy nhiên kết quả thử nghiệm lại được thực hiện trên các thư viện cell chuẩn đồng bộ Mặc dù kết quả tổng hợp vẫn phù hợp với lý thuyết nghiên cứu nhưng nó chưa đạt đến mức tối ưu nhất
Trong công trình [28,29], Carlos và Matheus đã đề xuất qui trình thiết kế thư viện cell NCL bằng cách sử dụng qui trình công nghệ 45nm, kết quả của nghiên cứu là một bộ thư viện nguồn mở ở qui trình công nghệ 45nm Tuy nhiên, trong qui trình của họ, phần lớn là thực hiện bằng phương pháp thiết kế tự động Qui trình hoàn chỉnh trong [28] trải qua nhiều khối chức năng Các công cụ sử dụng cho thiết kế thư viện cell NCL trong [28] chủ yếu là các công cụ của chính tác giả như ROGEn, CeS, ASTRAN và LiCHEn kết hợp công cụ thương mại như Virtuoso Ngoài ra, để hỗ trợ cho việc thiết kế tự động, người thiết kế phải viết rất nhiều script Do đó, phương pháp thiết kế thư
37 viện NCL cell trong [28] rất phức tạp và khó có thể lặp lại thành công bởi đọc giả Nếu có bất kỳ khó khăn xảy ra trong quá trình sử dụng công cụ riêng của tác giả thì đọc giả rất khó khắc phục Ngoài ra, nhiều script được viết bằng nhiều ngôn ngữ khác nhau theo ý đồ của người thiết kế để điều khiển một phần tự động trong qui trình thiết kế cũng là những khó khăn để đọc giả lặp lại qui trình Chính vì những lí do trên mà trong luận văn này, em đề xuất qui trình thực hiện thư viện bất đồng bộ NCL chuẩn dựa trên các công cụ thương mại để phục vụ cho việc nghiên cứu và giảng dạy tại các trường đại học ở các nước và đặc biệt là ở các trường đại học ở Việt Nam
Qui trình tạo thư viện cell gồm nhiều bước như trên Hình 4.1, bắt đầu của qui trình là bước phân tích chức năng của cell, bước này làm cơ sở cho việc thiết kế mạch nguyên lý Mạch nguyên lý của các cell NCL sẽ được dựa trên các cấu trúc tổng quát được giải thích ở phần 2.2 Sau khi vẽ mạch nguyên lý xong, bước tạo biểu tượng cho cell sẽ được thực hiện Bước tiếp theo là vẽ mạch nguyên lý để kiểm tra hoạt động của cell bằng cách sử dụng biểu tượng vừa tạo ở bước trước đó Nếu cell hoạt động đúng chức năng với các thông số PVT thì chuyển sang bước đo công suất rò rỉ và điện dung ngõ vào của mỗi cell, sau đó mô phỏng cell ở nhiều góc độ khác nhau (sự thay đổi về độ dốc của nguồn ngõ vào và giá trị tụ tải ở ngõ ra) bằng sự hỗ trợ của Ocean script để trích xuất số liệu về cell rise delay, cell fall delay, rise transition, fall transition, rise power, fall power Từ các số liệu đo đạc được thông qua sự hỗ trợ của ngôn ngữ OCEAN, file lib sẽ được hình thành theo định dạng của Synopsys Sau đó file lib sẽ được chuyển thành file db thông qua trình biên dịch lc_shell Bước cuối cùng là tổng hợp một thiết đơn giản để kiểm tra thư viện vừa tạo ra bằng công cụ Design Compiler Nếu kết quả tổng hợp thành công thì qui trình tạo thư viện xem như hoàn thành Kết quả được xem là thành công khi công cụ Design Compiler có thể chuyển file code verilog sang file verilog dưới dạng netlist, (file netlist này sau đó sẽ được mô phỏng với testbench để đảm bảo kết quả sau khi tổng hợp là chính xác), và trích xuất các thông số diện tích, công suất, tốc độ Các phần dưới đây sẽ giải thích chi tiết từng bước thực hiện và ví dụ minh họa
38 Hình 4 1 Qui trình thiết kế thư viện cell chuẩn
4.1.1 Phân tích chức năng của cell Đây là bước cơ bản nhất của qui trình thiết kế thư viện cell NCL, và cũng là bước tiền đề để thực hiện vẽ mạch nguyên lý, việc phân tích chức năng của cell được thực hiện dựa trên bảng 2.2 Phân tích để xác định rằng với các tổ hợp ngõ vào nào, thì khi nào ngõ ra của cell được chuyển mạch
4.1.2 Thiết kế mạch nguyên lý và tạo ký hiệu
Hình 4 2 a) Cấu trúc cổng ngưỡng tĩnh b) Cấu trúc cổng ngưỡng bán tĩnh c) Cấu trúc cổng ngưỡng động
Trong nghiên cứu [30] đã cho thấy cổng ngưỡng tĩnh có thể sử dụng điện áp rất thấp, dưới điều kiện điện áp thấp, chúng tiêu thụ năng lượng hay công suất rất thấp Tuy nhiên, tốc độ xử lý chậm Vì vậy, các mạch NCL tĩnh chỉ thích hợp cho các ứng dụng năng lượng thấp mà không đòi hỏi nhiều về tốc độ xử lý và diện tích vi mạch Triển khai động của các mạch NCL chiếm diện tích ít hơn, và tốc độ cao hơn Thuận lợi của triển khai bán tĩnh là khả năng mẫn cảm với nhiễu, điều này thì cũng giống như triển khai động, khi nhiễu là một vấn đề thì triển khai bán tĩnh của các mạch NCL sẽ được lựa chọn Trong luận văn này, mục tiêu đang hướng đến việc nghiên cứu qui trình xây dựng thư viện chuẩn NCL dành cho các nghiên cứu vi mạch công suất thấp, tốc độ cao nên trong ba mô hình cổng ngưỡng trên Hình 4.2 thì mô hình cổng ngưỡng bán tĩnh sẽ thích hợp chọn để nghiên cứu
Trên hình 4.2, cấu trúc tổng quát của hai khối Go to Null (khối Reset) và khối Hold Data là bù lẫn nhau Tương tự như thế, khối Go to Data (khối Set) và khối Hold Null là bù lẫn nhau Biểu thức của khối Go to Data chính là biểu thức ngõ ra của cổng ngưỡng, còn biểu thức của khối Hold Null là bù của biểu thức mô tả khối Go to Data Chính vì biểu thức logic mô tả giá trị của hai khối này tùy thuộc vào biểu thức của ngõ ra cổng nên cấu trúc của các khối này sẽ không có dạng tổng quát mà tùy thuộc theo từng cổng Thư viện của các cổng ngưỡng NCL gồm có 27 cổng trong Bảng 2.2
Ví dụ: Thiết kế mạch nguyên lý cho cổng ngưỡng th12, dựa theo Bảng 2.2, biểu thức của hàm F (A, B) ở ngõ ra của cổng th12 là
Biểu thức (4.1) cũng là biểu thức mô tả khối Go to Data, và khối Hold Null có giá trị bù của hàm Fgo_to_data (A, B), do đó khối Hold Null có công thức là:
Fhold_null (A, B) =A B (4.2) Để xác định biểu thức của khối “Go to Null”, cần phải xác định khi nào ngõ ra của cell được chuyển mạch từ 1 về 0 Đối với cổng th12, khi 2 ngõ vào A và B đều bằng
0, thì ngõ ra sẽ chuyển về mức 0 Do đó, biểu thức của khối “Go to Null” sẽ là:
Tương tự như khối “Hold Null”, khối “Hold Data” cũng là hàm bù của khối “Go to Null”, do đó, biểu thức của khối “Hold Data” sẽ là:
Dựa vào các phân tích trên, sơ đồ nguyên lý của th12 như hình 4.3 Tương tự, mạch nguyên lý của 27 cổng ngưỡng NCL sẽ được trình bày trong phần phụ lục 1 Vì khối “Go to Data”, và “Hold Data” thuộc mạng pull down nên trong sơ đồ nguyên lý, hai nmos sẽ được mắc song song với nhau Khối “Hold Null”, và “Go to Null” thuộc mạng pull up nên sẽ sử dụng hai pmos mắc nối tiếp nhau
41 Hình 4 3 Mạch nguyên lý của th12
Sau khi hoàn thành phần thiết kế mạch nguyên lý cho các cell, giai đoạn kế tiếp là tạo các biểu tượng và mô phỏng để kiểm tra nguyên lý hoạt động của các cell đó (hình 4.4)
Hình 4 4 Mạch testbench của th12
4.1.3 Kiểm tra chức năng Để đảm bảo cell có thể hoạt động chính xác thì tổ hợp có thể có của các corner PVT sau cần được kiểm tra với mạch testbench như trong hình 4.4
- Đối với thông số quy trình: FF (fast fast), SS (slow slow), TT (typical typical), SF (slow fast), và FS (fast-slow)
- Đối với thông số nhiệt độ: -25 o C, 0 o C, và 125 o C
- Đối với thông số điện áp: bao gồm điện áp chuẩn và ±10% điện áp chuẩn
Nếu cell có thể hoạt động đúng với các corner trên thì bước đo điện dung ngõ vào và công suất rò rỉ sẽ được thực hiện
4.1.4 Công suất rò rỉ và điện dung ngõ vào
Nếu kết quả kiểm tra chức năng đạt yêu cầu thì chúng ta tiến hành mô phỏng để đo điện dung ngõ vào và công suất rò rỉ Điện dung ở các chân có thể được xác định ở tất cả các chân ngõ vào và ngõ ra Trong hầu hết các trường hợp, nó chỉ được xác định tại các chân ngõ vào Điều đó có nghĩa là điện dung ngõ ra của một cell là bằng không [30] Giá trị điện dung ngõ vào được tính theo (4.5), cho thấy mối quan hệ giữa điện áp, dòng điện và điện dung
Bằng cách cung cấp điện áp xung cho chân ngõ vào và thực hiện các phép đo dòng điện tại cùng một điểm, chúng ta sẽ tính được giá trị điện dung ngõ vào theo công thức (4.6)
∫ t t+Δt dV (4.6) Trong đó, I là dòng điện tại chân ngõ vào, và được tạo ra bởi quá trình nạp và xả điện tích qua điện dung ngõ vào
43 Hầu hết các cell bình thường chỉ tiêu tán công suất khi ngõ ra thay đổi Tuy nhiên, các năng lượng khác vẫn bị tiêu thụ khi các cell được cung cấp điện áp nhưng không hoạt động vì dòng điện rò rỉ khác 0 Dòng điện trong đường hầm qua ôxít cổng của các thiết bị MOS (metal-oxide-silicon) hoặc dòng điện ngưỡng phụ gây ra rò rỉ [30] Công suất rò rỉ được tính bằng (4.7)
Thực hiện thiết kế thư viện cell bán tĩnh
Trong phần này, cell th33 sẽ được sử dụng làm ví dụ để mô tả quy trình thiết kế thư viện cell bất đồng bộ NCL Các cell còn lại sẽ được thực hiện tương tự
4.2.1 Phân tích chức năng của cell
Theo quy trình thiết kế trên hình 4.1, phân tích chức năng của cell là bước cơ bản và cũng là bước quan trọng để tạo ra 1 cell bởi vì nếu bước này bị sai thì các bước sau sẽ không thể thực hiện được và bắt buộc phải quay lại bước phân tích chức năng để kiểm tra Đối với cell th33, cell này có 3 ngõ vào, và trọng số của cell là 3 Điều này có nghĩa là khi cả 3 tín hiệu ngõ vào lên mức 1, thì ngõ ra sẽ bằng 1 Ngược lại, nếu cả 3 ngõ vào đều bằng 0, thì ngõ ra sẽ bằng 0 Các trường hợp còn lại, ngõ ra sẽ giữ trạng thái trước đó
4.2.2 Vẽ mạch nguyên lý và tạo ký hiệu Ở bước này, khối go to null và go to data cần được xác định để vẽ mạch nguyên lý Dựa vào bảng 2.2, thì công thức của khối Go to Data sẽ là:
49 Đối với khối Go to Null, khối này để reset ngõ ra của cell về giá trị 0, nên cấu trúc của khối này luôn là các pmos ghép nối tiếp với nhau:
Mô hình cổng ngưỡng bán tĩnh không cần khối Hold Data và Hold Null để duy trì mức 1 hoặc 0, thay vào đó, các giá trị 0 và 1 được giữ bởi cổng đảo yếu Cổng đảo này sẽ được xác định kích thước bằng phương pháp thực nghiệm bởi vì ứng với mỗi cell khác nhau thì kích thước của cổng đảo yếu này cũng sẽ khác nhau để đủ khả năng duy trì mức 1 và 0 Vì cổng đảo phản hồi yếu, nên kích thước transistor ở cổng đảo phải nhỏ hơn kích thước transistor khác Do đó, cặp transistor tạo nên cổng đảo được giữ ở kích thước tiêu chuẩn và thay đổi độ rộng của các transistor còn lại Giai đoạn này phải được phối hợp chặt chẽ với giai đoạn mô phỏng để kiểm tra hoạt động của cell
Hình 4 8 Sơ đồ mạch nguyên lý của th33
50 4.2.3 kiểm tra chức năng của cell
Sau khi thiết kế sơ đồ mạch của cell, mạch thiết kế được mô phỏng để kiểm tra chức năng Nếu kết quả mô phỏng của cell đúng, quá trình này sẽ chuyển sang bước mô phỏng để đo điện dung ngõ vào và công suất rò rỉ Ngược lại, chúng ta phải kiểm tra lại bước phân tích chức năng của cell Cell th33 có 3 ngõ vào và ngưỡng là 3, nên khi có 3 ngõ vào lên mức 1 thì ngõ ra chuyển trạng thái lên mức 1 và ngõ ra sẽ giữ trạng thái mức 1 cho tới khi cả 3 ngõ vào xuống mức 0 Vì vậy, chúng ta sẽ mô phỏng kiểm tra chức năng cell qua trường hợp sau
Trường hợp: A, B, C được cấp Vpulse
Hình 4 9 Mạch testbench của th33
Kết quả kiểm tra chức năng của cell được trình bày trên hình 4.10 Về mặt lý thuyết, khi ba ngõ vào chuyển đổi lên mức cao thì ngõ ra của th33 lên mức cao Khi cả ba ngõ vào chuyển xuống mức thấp thì ngõ ra của th33 trở thành mức thấp Các hình 4.10 cho thấy rằng cổng th33 hoạt động chính xác
51 Hình 4 10 Kiểm tra chức năng cell th33 (A, B và C kết nối Vpulse)
4.2.4 Đo công suất rò rỉ và tụ ngõ vào
Công suất rò rỉ và tụ ngõ vào của cell được đo dựa theo công thức ở phần 4.1.4 4.2.5 Đặc tính hóa cell cho thư viện bán tĩnh Đặc tính hóa cell là một trong những bước quan trọng nhất trong quy trình bởi vì bước này sẽ thực hiện việc đo đạc các thông số về timing (cell rise, cell fall, rise transition, fall transition), và công suất của cell (rise power, và fall power) Toàn bộ các cell của thư viện sẽ được đo với cùng khoảng Cload và input transition (skew) như bảng 4.1
Giá trị CLoad được xác định dựa trên mô hình tương của cell và các thông số của qui trình công nghệ 45nm cho NMOS và PMOS, trên cơ sở giá trị tính toán này, CLoad sẽ được mở rộng phạm vi để áp dụng tổng quát cho tất cả các cell
Giá trị thời gian cạnh lên hoặc xuống của xung điện áp ngõ vào có thể được tính dựa trên mô hình Elmore delay hoặc phương pháp thực nghiệm Sau đó, mở rộng phạm vi khảo sát để áp dụng chung cho tất cả các cell
52 Bảng 4 1 Các giá trị Cload và thời gian cạnh lên hoặc xuống của Vpulse
CLoad (fF) 1.4 2.54 4.61 8.37 15.2 27.6 50.0 Slew Vpulse (ns) 0.01 0.0192 0.0368 0.0707 0.136 0.261 0.5
Dựa theo bảng 4.1, có tất cả 49 trường hợp của Cload và slew Vpulse, 49 tác vụ phải được thực hiện theo cách thủ công vì không có các tùy chọn và lệnh nào đủ mạnh trong giao diện để thực hiện các tác vụ lặp đi lặp lại, đây là một trong những nhược điểm lớn của ADE Ngoài ra, không có phương pháp nào để đặc tính hóa cell thông thường theo cách tự động Do đó, trong phần này, ngôn ngữ Ocean được sử dụng để hỗ trợ tự động thực thi các mô phỏng trong Cadence vì nó là một trong những ngôn ngữ script mạnh Ngoài tập lệnh Ocean, công cụ Calculator của Virtuoso cũng được sử dụng để thực hiện đặc tính hóa cell Tập lệnh Ocean không được sử dụng để hỗ trợ đo điện dung ngõ vào và công suất rò rỉ vì nó chỉ được sử dụng để hỗ trợ đo một dải giá trị
Hình 4.11 là kết quả mô phỏng của 49 trường hợp với chân A được cấp nguồn xung, chân B và C được nối GND để đo thông số cell fall, cell rise, rise transition, fall transition, rise power, và fall power Tương tự, Hình 4.12 cho thấy kết quả mô phỏng của các trường hợp còn lại Các bảng (từ Bảng 4.2 đến Bảng 4.7) cho thấy các thông số của mô hình thời gian và công suất như cell fall, cell rise, rise transition, fall transition, rise power, và fall power
Hình 4 11 Kết quả mô phỏng với chân A được cấp Vpulse, B và C được nối GND
53 Hình 4 12 Kết quả mô phỏng với chân A được cấp Vpulse, B và C kết nối VDD
Bảng 4 2 Cell fall delay (A = Vpulse, B = GND, C = GND)
Bảng 4 3 Fall transition (A = Vpulse, B = GND, C = GND)
54 Bảng 4 4 Fall power (A = Vpulse, B = GND, C = GND)
Bảng 4 5 Cell rise delay (A = Vpulse, B = VCC, C = VCC)
Bảng 4 6 Rise transition (A = Vpulse, B = VCC, C = VCC)
55 Bảng 4 7 Rise power (A = Vpulse, B = VCC, C = VCC)
4.2.6 Kiểm tra tổng hợp code RTL với thư viện bán tĩnh Ở phần này, module toàn phần được sử dụng như là một ví dụ để thử nghiệm hoạt động của thư viện Module này bao gồm 2 cổng th23 và hai cổng th34w2, nó được mô phỏng bằng cách sử dụng công cụ Design Compiler và thư viện được tạo bởi qui trình được đề xuất Các tham số điển hình của thư viện như nhiệt độ là 25 o C, điện áp hoạt động của các cell là 1.25V và process là ff
Hình 4 13 File netlist sau khi tổng hợp
56 Hình 4 14 Kết quả tổng hợp về diện tích
Hình 4 15 Kết quả tổng hợp về công suất
Hình 4 16 Kết quả tổng hợp về delay
4.3 So sánh qui trình thiết kế thư viện cell NCL được đề xuất với qui trình của tác giả khác Để cho thấy ưu điểm của qui trình thiết kế thư viện NCL được đề xuất, tác giả đã so sánh quy trình này với qui trình thiết kế thư viện NCL trong [29], và đồng thời tác giả đã sử dụng thư viện PDK ở cùng một công nghệ để đảm bảo tính tương đối Qui trình trong [29] được thực hiện qua 15 khối chức năng, sử dụng 2 công cụ thương mại,
4 công cụ riêng của tác giả và 6 script, trong khi đó quy trình được đề xuất thực hiện qua 7 khối chức năng, sử dụng chỉ 2 công cụ thương mại và 1 script Do đó, qui trình trong [29] phức tạp hơn, các chức năng trong qui trình được thực hiện qua 4 công cụ riêng của tác giả, điều này cũng là một khó khăn cho đọc giả trong quá trình cài đặt và sử dụng