Nội dung của luận văn có thể được chia thành ba phần chính: 1 Nguyên cứu và xây dựng qui trình đầy đủ, rõ ràng các bước để kiểm định thiết kế vi mạch bất đồng bộ bằng công cụ kiểm tra mô
GIỚI THIỆU
Tính cấp thiết của đề tài
Trong thiết kế mạch tích hợp mật độ cao, thiết kế bất đồng bộ nổi bật như giải pháp vượt trội thay thế thiết kế đồng bộ truyền thống Các mạch bất đồng bộ gồm các thành phần hoạt động độc lập, liên lạc với nhau bằng tín hiệu thông báo trạng thái hoàn thành nhiệm vụ Tuy nhiên, mặc dù tiềm năng lớn, các quy trình thiết kế bất đồng bộ còn hạn chế do chưa phổ biến trong ứng dụng công nghiệp cũng như sự phát triển mạnh của thiết kế đồng bộ có tính tự động hóa cao.
Một trong nhưng nguyên nhân quan trọng nữa là hiện nay các phương pháp kiểm định hình thức (formal verification) để đảm bảo tính đúng đắn (correctness) của một thiết kế vi mạch bất đồng bộ vẫn còn đang được nghiên cứu [46][26][25][19][9] Giả định rằng, các phương pháp kiểm định thiết kế là hiệu quả, một nhà thiết kế vi mạch có thể nhanh chóng xác định được các khiếm khuyết trong thiết kế của 1 vi mạch bất đồng bộ trước khi nó được chế tạo và tung ra thị trường Hiển nhiên việc kiểm định này giúp tiết kiệm tài chính, nhân lực và thậm chí cả tính mạng của con người trong việc khắc phục sai sót của các vi mạch trong đời sống chúng ta Tuy nhiên, các phương pháp kiểm định thiết kế là hiệu quả chỉ là giả định và bản thân khái niệm
“hiệu quả” cũng không rõ ràng khi có sự đánh đổi giữa tài nguyên con người, máy móc với mục tiêu cần được kiểm định
Do các thành phần của vi mạch bất đồng bộ hoạt động độc lập và chỉ giao tiếp với nhau thông qua các giao thức, các nhà thiết kế có thể dùng các ngôn ngữ đặc tả hình thức cấp cao để biểu diễn vi mạch Đây là một điểm đặc biệt thuận lợi của hướng tiếp cận thiết kế bất đồng bộ
Các ngôn ngữ mô tả thiết kế cấp cao như CSP, CHP và ADL cho phép nhà thiết kế tập trung vào hành vi của vi mạch Nhờ vậy, nhà thiết kế không còn phải bận tâm đến chi tiết triển khai phần cứng bên dưới, giúp nâng cao hiệu quả quá trình thiết kế.
Ngoài các ngôn ngữ cấp cao trong biễu diễn các thiết kế vi mạch, các hình thức biểu diễn trung gian như mạng Petri [27], đồ thị dòng dữ liệu DFG [34] cũng được quan tâm nghiên cứu
Trong [12], nhóm tác giả đề xuất một sự kết hợp của mạng Petri và đồ thị dòng dữ liệu (gọi tắt là
PN-DFG) Những mô hình trung gian này có ý nghĩa rất quan trọng trong việc giả lập và phân tích thiết kế vi mạch bất đồng bộ
Trong nghiên cứu được thực hiện ở ĐH Bách Khoa Tp.HCM [12] về việc nghiên cứu xây dựng phương pháp luận thiết kế vi mạch bất đồng bộ loại QDI, các tác giả đã đưa ra được một framework phục vụ cho qui trình thiết kế vi mạch bất đồng bộ và hiện thực thành nó thành công cụ gọi là PAiD Công cụ này cho phép nhà thiết kế đặc tả vi mạch bất đồng bộ ở ngôn ngữ cấp cao và thông qua các phép biến đổi trung gian tổng hợp thành vi mạch biểu diễn ở cấp thấp (netlist) Tuy nhiên, công cụ này chưa giải quyết bài toán kiểm định thiết kế
Từ những tìm hiểu tổng quan nêu trên, tính cấp thiết của việc kiểm định tính đúng đắn của một thiết kế vi mạch bất đồng bộ tạo động lực mạnh mẽ cho các công việc được thực hiện trong luận văn này.
Phát biểu vấn đề
Các nghiên cứu đề xuất một phương pháp kiểm định thiết kế cho các thiết kế vi mạch bất đồng bộ giải quyết hai vấn đề chính: (1) khả thi của cách kiểm định dựa trên mô hình kiểm tra trong kiểm định vi mạch bất đồng bộ và thiết lập một quy trình toàn diện cho các thủ tục kiểm định; (2) tích hợp thực tế của kiểm định vào quy trình thiết kế để đánh giá phương pháp đã đề xuất.
Vấn đề thứ nhất thuộc phạm vi nghiên cứu lý thuyết về kiểm định hình thức Về bản chất, vấn đề quan trọng nhất là giải quyết bài toán bùng nổ không gian trạng thái (state space explosion problem) Đây là vấn đề cơ bản của bất kỳ phương pháp kiểm định nào (phần mềm, phần cứng, qui trình công nghiệp, …) Nói một cách tổng quát, chỉ khi nào tất cả các trạng thái có thể có của một vi mạch đều không dẫn đến khiếm khuyết nào, vi mạch đó mới được đảm bảo là đúng với mục đích thiết kế của nó Khi công việc thiết kế tiến đến qui mô công nghiệp, không gian trạng thái của vi mạch sẽ nhanh chóng vượt ra ngoài tầm kiểm soát Mặc dù người ta có thể dùng phương pháp mô phỏng (simulation) và kiểm thử (testing) để nâng độ an tâm đối với vi mạch, chúng không thể đảm bảo tính đúng đắn của một vi mạch [8] Do đó, việc áp dụng thành công một phương pháp kiểm định hình thức sẽ là tiền đề quan trọng cho việc chứng minh sự đúng đắn của một vi mạch bất đồng bộ một cách đầy đủ
Vấn đề thứ hai liên quan đến qui trình thiết kế và thời điểm tích hợp phương pháp kiểm định vào qui trình này Như đã trình bày, các qui trình thiết kế ngày nay đều cho phép các nhà thiết kế mô tả vi mạch ở cấp ngôn ngữ cấp cao trước khi diễn tả ở một ngôn ngữ cấp thấp hơn (ví dụ như sơ đồ netlist) và hiện thực mạch bằng phần cứng Do đó, việc tích hợp có thể diễn ra ở cấp ngôn ngữ cấp cao hoặc các cấp trung gian [23] và thậm chí ở mức ngôn ngữ cấp thấp [9]
Mỗi cách tích hợp sẽ giải quyết được những nhóm bài toán khác nhau đối với vấn đề kiểm định
Ví dụ như, các hiện tượng nhiễu (hazard) chỉ có thể được kiểm định sau khi có bản thiết kế ở mức cổng phần cứng (netlist) [38] Tuy nhiên, độ phức tạp của bài toán sẽ tăng lên rất nhiều khi mức biểu diễn càng xuống cấp thấp Ngoài ra, ngôn ngữ càng cấp cao, trừu tượng càng gần gũi và dễ hiểu hơn với người thiết kế Do vậy, các kiểm định ở các mức cấp cao này sẽ giúp nhà thiết kế giải quyết vấn đề thiết kế hiệu quả hơn [60][19] Lúc này, các công cụ thiết kế hỗ trợ ngôn ngữ cấp cao, có tích hợp các phép biến đổi đến các cấp thấp hơn và cấp cổng phần cứng, đồng thời tích hợp việc kiểm định, là một nhu cầu rất lớn Ở các cấp biểu diễn trung gian, mặc dù đã có nhiều nghiên cứu có kết quả khả quan
[25][46][47] như chuyển từ mạng Petri sang BDD [46] và dùng các công cụ kiểm định sẵn có, việc biểu diễn một vi mạch bất đồng bộ dùng các ngôn ngữ trung gian này (như mạng Petri) là khá khó khăn Trong vấn đề này còn có thêm một vấn đề kèm theo đó là kiểm định tính đúng đắn của các phép biến đổi từ các đặc tả mức cao hơn xuống một mức thấp hơn [25][26] Vấn đề này phần nào đã được giải quyết trong [12] bằng các qui luật biến đổi bảo toàn mục tiêu thiết kế
Vì vậy, bài toán đặt ra cấp bách hiện nay chính là kiểm định tính đúng đắn trong thiết kế ở mức diễn đạt cấp cao và các cấp trung gian Ngoài ra, để chứng minh cho tính khả thi của phương pháp kiểm định, luận văn cũng xây dựng một bộ các vi mạch mẫu để tiến hành thực nghiệm và lấy kết quả phân tích.
Đóng góp của luận văn
Những đóng góp chính của luận văn như sau:
Qui trình kiểm định vi mạch bất đồng bộ ở mức trừu tượng hóa cáo bằng phương pháp kiểm tra mô hình
Các phương pháp biểu diễn mô hình trung gian vi mạch bất đồng bộ trong công cụ kiểm tra mô hình nổi tiếng NuSMV Các phương pháp chuyển đổi này có ý nghĩa hết sức quan trọng trong việc xây dựng qui trình kiểm định
Khối kiểm định mở rộng góp phần hoàn thiện hơn nữa môi trường thiết kế PAiD Nhờ đó, nó góp phần nâng cao độ tin cậy cho vi mạch bất đồng bộ tạo ra bởi công cụ thiết kế này
Bộ vi mạch mẫu dùng cho việc kiểm tra, đánh giá qui trình kiểm định đề xuất Ngoài ra, bộ vi mạch mẫu này còn có thể được sử dụng trong giảng dạy và nghiên cứu về vi mạch bất đồng bộ
Cuối cùng, có thể nói kết quả của luận văn góp phần làm phong phú hơn bức tranh toàn cảnh nghiên cứu về thiết kế vi mạch số nói chung và hướng tiếp cận bất đồng bộ nói riêng.
Công bố khoa học
Trong quá trình thực hiện luận văn, các kết quả đạt được đã được công bố ở các tạp chí, hội nghị quốc tế uy tín như sau:
Tin T Nguyen, Khoi-Nguyen Le-Huu, Thang H Bui, Anh-Vu Dinh-Duc, "A New
Approach and Tool in Verifying Asynchronous Circuits," in REV Journal on Electronics and Communications, vol 2, no 3-4 (Jul-Dec 2012), pp 113-120, 2012
1 Tin T Nguyen, Thang H Bui, Khoi-Nguyen Le-Huu, Anh-Vu Dinh-Duc, " Enhanced PAiD – An EDA Tool for Asynchronous Circuit Design and Verification," in Procs of ECTI Conference 2014 (ECTI – Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology), Nakhon Ratchasima, Thailand, May 14-17, 2014
2 T T Nguyen, K.-N Le-Huu, T H Bui and A.-V Dinh-Duc, "A New Approach and Tool in Verifying Asynchronous Circuits," in Procs of The International Conference on Advanced Technologies for Communications (ATC 2012), Hanoi, Vietnam, Oct 2012.s
3 T H Bui, T T Nguyen and A.-V Dinh-Duc, "Experiences with Representations and Verification for Asynchronous Circuits," in Procs of 4th Int Conf on Communications and Electronics (ICCE 2012), Hue, Vietnam, 2012.
Cấu trúc luận văn
Phần tiếp theo của luận văn sẽ trình bày các vấn đề như sau:
Chương 2: Tổng quan về thiết kế vi mạch bất đồng bộ, bao gồm các khái niệm cơ bản trong vi mạch bất đồng bộ và các đặc tả cấp cao cũng như cấp trung gian
Chương 3: Giới thiệu về môi trường thiết kế vi mạch bất đồng bộ PAiD
Chương 4: Trình bày tổng quan về kiểm định hình thức cùng với các vấn đề chính của nó
Chương 5: Trình bày về phương pháp kiểm định thiết kế vi mạch bất đồng bộ bằng kiểm tra mô hình Phần này bao gồm các nội dung về qui trình cũng như các phân tích đánh giá
Chương 6: Hiện thực khối kiểm định và tích hợp mở rộng công cụ PAiD
Chương 7: Trình bày bộ vi mạch mẫu, các kết quả thực nghiệm
Chương 8: Tổng kết chung về luận văn.
TỔNG QUAN THIẾT KẾ VI MẠCH BẤT ĐỒNG BỘ
Tổng quan về vi mạch bất đồng bộ
Thiết kế mạch số được chia thành hai nhóm chính: đồng bộ và bất đồng bộ Mạch đồng bộ dựa trên nguyên tắc xử lý tín hiệu nhị phân theo các đơn vị thời gian rời rạc, được biểu thị bằng khái niệm "xung nhịp" hay clock Chu kỳ của clock phải đủ dài để các thành phần mạch có đủ thời gian hoàn thành nhiệm vụ của chúng.
Thiết kế vi mạch bất đồng bộ có sự khác biệt so với vi mạch đồng bộ Nó vẫn dựa trên luận cứ các tín hiệu được rời rạc hóa Việc số hóa các tín hiệu cho phép hiện thực mạch đơn giản và tạo ra phương pháp thiết kế dựa trên đại số Boole Tuy nhiên, vi mạch bất đồng bộ không dựa trên luận cứ thời gian rời rạc Thay vào đó, nó sử dụng các giao thức bắt tay nhằm thực hiện các tác vụ đồng bộ cũng như tuần tự cần thiết Vi mạch bất đồng bộ đại diện cho một tập hợp lớn hơn các vi mạch bởi vì bộ điều khiển của các vi mạch này được hoạt động bằng tất cả các cơ chế khác với cơ chế xung nhịp duy nhất của vi mạch đồng bộ
2.1.1 Các vấn đề của vi mạch đồng bộ Đa phần các hệ thống số hiện tại đều hoạt động theo cơ chế đồng bộ Các hệ thống này được tổ chức dựa trên một xung nhịp và hoạt động của hệ thống diễn ra tuần tự theo tín hiệu xung nhịp Mọi phần tử của hệ thống đều cùng hoạt động khi có sự xuất hiện của xung nhịp Cơ chế kích hoạt đồng thời các phần tử dẫn đến một ràng buộc về thời gian Tất cả các phần tử trong hệ thống phải đảm bảo thực hiện trong một khoảng thời gian cố định, được xác định bằng tần số xuất hiện các sự kiện kích hoạt (điều kiện hoạt động đúng) Do đó, tất cả các phần tử phải được đồng bộ theo thời gian
Nhờ vào tính đơn giản của việc tập trung điều khiển trong phương cách tiếp cận này, các hệ thống đồng bộ đã chiếm ưu thế trong nền công nghiệp vi điện tử một thời gian dài Tuy nhiên, khi các hệ thống trở nên phức tạp hơn (có tính đồng thời nhiều hơn) và khi các thành phần cấu tạo hệ thống trở nên nhỏ hơn, nhanh hơn, phương cách tiếp cận đồng bộ ngày trở nên hạn chế
Có một số khó khăn khi thiết kế các hệ thống đồng bộ:
Phân phối xung nhịp: nếu tín hiệu xung nhịp không được phân phối một cách đồng đều, các phần tử trong mạch có thể nhận tín hiệu xung nhịp tại các thời điểm khác nhau (hiện tượng trôi xung nhịp – “clock skew”), dẫn tới mạch có thể không hoạt động đúng Tuy nhiên, vấn đề phân phối xung nhịp thực tế có thể được hạn chế bằng 2 cách Cách thứ nhất là giảm tần số xung nhịp để đảm bảo điều kiện hoạt động đúng Giá phải trả cho cách tiếp cận này là việc giảm hiệu suất hoạt động của mạch Cách thứ hai là giảm thiểu vấn đề phân phối xung nhịp bằng cách thiết kế cẩn thận đường tín hiệu xung nhịp Giá phải trả cho cách tiếp cận này là sự gia tăng kích thước mạch
Thứ tự xuất hiện các tín hiệu nhập: thời điểm xảy ra bất kỳ của các tín hiệu nhập có thể ảnh hưởng đến tính chính xác của mạch Các tín hiệu nhập này có thể khiến các phần tử nhớ của mạch rơi vào trạng thái không xác định: metastability [57] Không có giải pháp nào để giải quyết vấn đề này Việc dùng cặp các phần tử nhớ để tái đồng bộ một tín hiệu nhập không đồng bộ với xung nhịp [13] có khả năng làm giảm hiệu suất hoạt động của hệ thống
Hiệu quả thấp nhất: nếu một thành phần của hệ thống có khả năng xử lý nhanh chóng một số các tín hiệu nhập nhất định nào đó, hiệu suất của thành phần này cũng bị giới hạn bởi tần số xung nhịp
Tiêu thụ năng lượng: việc phân phối tín hiệu xung nhịp đến các thành phần khác nhau trong hệ thống khiến việc tiêu thụ năng lượng của hệ thống tăng lên Năng lượng tiêu thụ sẽ càng nhiều hơn nếu người ta tăng tần số xung nhịp của hệ thống
Khó mođun hóa thiết kế: trong một hệ thống đồng bộ, người ta không thể dễ dàng thay thế một thành phần mà không xét đến các ràng buộc toàn cục Nếu thành phần mới được thay chạy chậm, hệ thống có thể không hoạt động đúng trừ phi người ta phải giảm tần số xung nhịp toàn cục của hệ thống Đây là một vấn đề quan trọng trong việc thiết kế các hệ thống hướng đến đối tượng: rất khó khi muốn kết hợp các hệ thống đồng bộ hoạt động với các tần số xung nhịp khác nhau Mođun tính là tính chất rất quan trọng trong việc thiết kế mạch, tuy nhiên tính chất này lại rất khó áp dụng trong việc thiết kế mạch đồng bộ
Nhiễu điện từ: trong mạch đồng bộ, việc xử lý các tác vụ được thực hiện khi có sự xuất hiện của xung nhịp Tất cả các tín hiệu sẽ thay đổi theo tần số xung nhịp Điều này sẽ dẫn đến sự thay đổi đáng kể cường độ dòng điện, tạo ra các đỉnh trong biểu đồ dòng điện
Rõ ràng là các khó khăn trở ngại của vi mạch đồng bộ đã khiến vi mạch bất đồng bộ phát triển đáng kể trong các năm gần đây Với việc giải quyết được những khó khăn trở ngại của vi mạch đồng bộ, phương pháp bất đồng bộ đã mở ra một hướng tiếp cận mới trong việc thiết kế vi mạch [11] Thay vì hoạt động với một xung nhịp toàn cục, các hệ thống bất đồng bộ hoạt động với bộ điều khiển phân tán cục bộ Điều này sẽ tránh được các vấn đề liên quan đến xung nhịp toàn cục
2.1.2 Các nguyên lý cơ bản của vi mạch bất đồng bộ
2.1.2.1 Chế độ hoạt động bất đồng bộ
Khác với hệ thống đồng bộ, trong đó tín hiệu xung nhịp đóng vai trò chủ đạo trong hoạt động toàn cục, hệ thống bất đồng bộ là những mạch có bộ điều khiển hoạt động không theo một tín hiệu xung nhịp toàn cục Các hệ thống này hoạt động với cơ chế đồng bộ cục bộ và việc thực hiện các tác vụ chỉ phụ thuộc vào sự có mặt của các dữ liệu đầu vào Vì vậy tính đúng đắn của hệ thống sẽ không phụ thuộc vào thời gian thực hiện của các thành phần
Mạch bất đồng bộ theo dõi sự xuất hiện của các sự kiện, không phụ thuộc vào thứ tự Tương tự hoạt động của "dòng dữ liệu" Biểu đồ phụ thuộc mô tả trình tự sự kiện, tương ứng với mô hình giao tiếp tuần tự Các quá trình trong mô hình đồng bộ bằng cách trao đổi tin nhắn qua kênh truyền thông Để trao đổi thông tin, hai thành phần phải đồng bộ Chúng trao đổi qua kênh truyền thông và tiếp tục thực thi độc lập.
Chính vì vậy, người ta phải dùng một giao thức để đảm bảo thứ tự của quá trình trao đổi thông tin
Theo cách trên, một hệ thống phức tạp với nhiều thành phần hoạt động đồng thời có thể được xây dựng bằng cách kết hợp các thành phần đó theo những qui tắc và thứ tự kết nối thông thường Điều này có thể thực hiện được là do việc đặc tả chức năng của các thành phần và sự giao tiếp của chúng với các thành phần khác không bị ràng buộc tường minh về thời gian Kết quả là ta có một kiến trúc tường minh, không bị che giấu trong một bộ tuần tự trung tâm Kiến trúc này cho phép khảo sát việc thiết kế một chức năng nào đó mà không bị ràng buộc bởi bản mô tả các đặc tính liên quan đến việc hiện thực của bộ tuần tự (hay bộ điều khiển)
Từ quan điểm thiết kế, hệ thống bất đồng bộ không cần quan tâm đến các vấn đề phân phối xung nhịp và tín hiệu phát Do không bị hạn chế bởi xung nhịp, các thành phần của hệ thống bất đồng bộ có thể hoạt động với tốc độ nhanh nhất có thể Hơn nữa, vấn đề giao tiếp giữa các thành phần hoạt động với tốc độ khác nhau có thể được giải quyết Do đó việc mở rộng hệ thống sẽ được thực hiện dễ dàng hơn Do tính cục bộ trong vấn đề đồng bộ, hệ thống bất đồng bộ có thể được xây dựng từ các thành phần được cấu tạo khác nhau, chỉ với điều kiện là giao thức truyền thông phải được đảm bảo Người ta có thể thay đổi công nghệ hiện thực của các thành phần, thay thế chúng bằng các thành phần tương đương mà chức năng của hệ thống vẫn được đảm bảo Do đó sự chuyển dịch công nghệ có thể được thực hiện dễ dàng
2.1.2.2 Các vấn đề trong thiết kế
Các khái niệm cơ bản
Phần này trình bày một số khái niệm và tính chất cơ bản của việc thiết kế vi mạch bất đồng bộ
2.2.1 Kênh trao đổi thông tin
Các vi mạch bất đồng bộ thường được xây dựng từ các khối chức năng Dữ liệu được trao đổi giữa các khối này thông qua các kênh truyền thông (Cách xây dựng này cho phép dễ dàng sử dụng lại các khối chức năng có sẵn và do đó làm đơn giản hóa việc thiết kế các hệ thống phức tạp) Kênh truyền thông là một phương tiện trao đổi dữ liệu từ điểm này đến điểm khác giữa các khối bất đồng bộ Kênh truyền thông gồm một số dây nối và một giao thức Các dây nối bao gồm tập hợp các dây nối cần thiết để trao đổi tín hiệu điều khiển (thực hiện giao thức truyền thông) và tập hợp các dây nối để truyền dữ liệu Giao thức được dùng để đảm bảo tính đúng đắn của việc trao đổi thông tin theo đặc tả mong muốn Hình 1 minh họa khái niệm kênh truyền thông
Hình 1 Khái niệm kênh truyền thông
Việc trao đổi dữ liệu thông qua kênh truyền thông được thực hiện có hướng từ bên phát đến bên nhận Bên phát (hoặc bên nhận) được gọi là chủ động nếu nó khởi xướng việc truyền thông tin Bên phát (hoặc bên nhận) được gọi là thụ động nếu nó đáp trả một yêu cầu truyền thông tin Đối với bên phát chủ động, nó khởi xướng việc truyền thông tin bằng cách báo hiệu dữ liệu trên kênh truyền thông là hợp lệ Tín hiệu hợp lệ này được phát hiện bởi bên nhận thông qua bộ mã hóa dữ liệu được dùng Đối với bên phát thụ động, bên nhận yêu cầu dữ liệu mới bằng cách gởi một tín hiệu ACK Để tránh các hiểu lầm, các kênh truyền thông được đề cập trong bản báo cáo này (ngoại trừ các trường hợp được chỉ ra cụ thề) được xây dựng từ chế độ bên phát chủ động và bên nhận thụ động
Kênh truyền thông được sử dụng để đồng bộ hóa các khối chức năng khác nhau, thường không mang theo dữ liệu Tuy nhiên, cũng có thể định nghĩa các kênh truyền thông mà dữ liệu được trao đổi theo cả hai hướng, thường được dùng trong giao tiếp với các bộ nhớ ROM, RAM,
Các vi mạch bất đồng bộ hoạt động dựa vào sự hiện diện của tín hiệu ở ngõ nhập và sự sẵn sàng của mạch tại thời điểm đó Để phát hiện dữ liệu tại các ngõ nhập và do đó đảm bảo sự đồng bộ giữa các đường dữ liệu khác nhau trong một vi mạch bất đồng bộ, thông tin về tính hợp lệ của dữ liệu phải đi kèm với mỗi đường dữ liệu Nguyên lý này ám chỉ cần phải có một cách biểu diễn thông tin phù hợp đối với vi mạch bất đồng bộ, nghĩa là phải có cách mã hóa thông tin khác Có hai cách mã hóa thông tin thông dụng hiện nay: mã hóa nhóm dữ liệu và mã hóa không phụ thuộc thời gian trễ [43][1]
2.2.2.1 Mã hóa “nhóm dữ liệu” (bundled data)
Cách dễ dàng nhất trong việc biểu diễn tính hợp lệ của dữ liệu là thêm một tín hiệu vào mỗi đường dữ liệu để chỉ thị dữ liệu này hợp lệ hay không (xem Hình 2a) Đường dữ liệu vẫn tuân theo cách mã hóa thông thường của mạch đồng bộ: mỗi dây tín hiệu biểu diễn một bit thông tin (còn gọi là mã hóa mono-rail hoặc single-rail [45] Tín hiệu chỉ thị tính hợp lệ của dữ liệu
(còn gọi là tín hiệu yêu cầu – request) thường có một thời gian trễ thích hợp
[54][31][37][22].Thời gian trễ này phải lớn hơn hoặc bằng thời gian cần thiết để xử lý trong trường hợp xấu nhất
Cách mã hóa này rất hiệu quả về mặt kích thước mạch (số đường dây tín hiệu và số cổng dùng để điều khiển các đường dây này) Nó cho phép vi mạch bất đồng bộ thực hiện đúng chức năng cần thiết Tuy nhiên, nhược điểm của cách mã hóa thông tin này là việc phải dùng các thời gian trễ thích hợp Thời gian trễ này phụ thuộc vào trường hợp hoạt động xấu nhất của vi mạch, không phụ thuộc vào thời gian lan truyền thực tế của các tín hiệu
2.2.2.2 Mã hoá không phụ thuộc thời gian trễ (delay-insensitive)
Khác với cách mã hóa “nhóm dữ liệu”, một cách mã hóa khác phức tạp hơn bao gồm tích hợp thông tin về tính hợp lệ của dữ liệu vào trong chính dữ liệu đó Cách mã hóa này có đặc điểm là dữ liệu được phát hiện mà không dựa vào bất cứ ràng buộc về thời gian nào cả Đặc điểm này mang lại khả năng cao, tính khả chuyển và sự dễ dàng trong việc thiết kế vi mạch a) Mã hóa 4 trạng thái
Theo cách mã hóa này (Hình 2b), mỗi bit dữ liệu được biểu diễn bằng 2 đường tín hiệu
Trong số 4 trạng thái có thể của 2 đường tín hiệu này, 2 trạng thái để biểu diễn giá trị 0, 2 trạng thái để biểu diễn giá trị 1 Việc thay đổi dữ liệu mới được thực hiện bằng cách thay đổi chỉ một đường tín hiệu: thay đổi đường tín hiệu bên trái chỉ thị giá trị của dữ liệu không đổi so với giá trị cũ của dữ liệu, thay đổi đường tín hiệu bên phải chỉ thị giá trị của dữ liệu trái ngược với giá trị cũ của dữ liệu Tính hợp lệ của dữ liệu được biểu diễn bằng sự thay đổi parity của 2 đường tín hiệu b) Mã hóa 3 trạng thái
Cũng như cách mã hóa thông tin theo 4 trạng thái, mỗi bit theo cách mã hóa này được biểu diễn bởi 2 đường tín hiệu Tuy nhiên, mỗi bit thông tin chỉ được biểu diễn bằng một tổ hợp các đường tín hiệu Tổ hợp thứ 3 được dùng để chỉ trạng thái không hợp lệ của dữ liệu và tổ hợp thứ 4 không được dùng Do đó như trong Hình 2c, việc thay đổi giá trị hợp lệ này sang giá trị hợp lệ khác phải đi qua trạng thái không hợp lệ
Hình 2 Các mã hóa thông tin thông dụng cho vi mạch bất đồng bộ
Trong 3 cách mã hóa thông tin kể trên, mặc dù cách mã hóa 3 trạng thái có vẻ như không tự nhiên lắm, nhưng đây chính là cách mã hóa được sử dụng nhiều nhất hiện nay Điều này là do sự dễ dàng trong việc hiện thực và tính bảo mật cao của cách mã hóa thông tin này Thực ra, trong 2 cách mã hóa kia, mạch luận lý thêm vào cho việc mã hóa đều có vấn đề Đối với cách mã hóa “nhóm dữ liệu”, người ta phải tái kết hợp dữ liệu và tín hiệu chỉ thị tính hợp lệ Đối với cách mã hóa 4 trạng thái, người ta phải cần bổ sung thêm một mạch để kiểm tra parity của 2 đường tín hiệu
Mã hóa 3 trạng thái (còn gọi là mã hóa 2 đường dây) là trường hợp đặc biệt của mã hóa one hot, dùng N đường dây tín hiệu để mã hóa một chữ số dạng N, mỗi đường đại diện cho một giá trị khác nhau Trạng thái không hợp lệ của dữ liệu được biểu thị bằng giá trị 0 trên mọi đường tín hiệu Mọi tổ hợp có nhiều hơn một đường dây mang giá trị 1 đều không được sử dụng Hình thức mã hóa này còn được gọi là "1-of-N" hoặc mã hóa nhiều đường dây Nó cũng có thể được mở rộng thành mã hóa "M-of-N".
Một biến thể của cách mã hóa 3 trạng thái là cách mã hóa 2 trạng thái: một trạng thái hợp lệ và một trạng thái không hợp lệ Do chỉ được mang thông tin để chỉ thị hợp lệ hay không hợp lệ, kênh truyền thông dùng cách mã hóa 2 trạng thái chỉ được dùng để đồng bộ hoạt động giữa các khối chức năng bất đồng bộ Trong trường hợp này, người ta chỉ cần duy nhất một đường dây tín hiệu: giá trị 1 để biểu diễn sự hợp lệ và giá trị 0 để chỉ trạng thái không hợp lệ Người ta gọi cách mã hóa này là mã hóa mono-rail để thống nhất với việc đặt tên cách mã hóa multi-rails
Việc mô tả chức năng của các khối bất đồng bộ trước hết dựa vào giao thức truyền thông được dùng trong việc trao đổi với các khối khác Giao thức dùng để đồng bộ (hoặc còn gọi là giao thức bắt tay – handshaking protocol) là tập hợp các qui định liên quan đến việc trao đổi thông tin thông qua kênh truyền thông giữa các khối bất đồng bộ với nhau
Người ta đã đưa ra nhiều giao thức khác nhau để thỏa mãn các ràng buộc đặt ra Thông thường để đơn giản hóa việc trình bày một giao thức, người ta mô tả tuần tự việc trao đổi thông tin giữa 2 khối chức năng trong một chu kỳ cơ bản Theo phương pháp này, các giao thức được phân làm 2 loại: giao thức 2 pha và giao thức 4 pha
Giao thức truyền thông là thỏa thuận về cách trao đổi dữ liệu giữa các thiết bị hoặc hệ thống Giao thức được xác định bởi ba yếu tố: thứ tự trao đổi thông tin, cách mã hóa dữ liệu và hoạt động của các cổng Số lượng giao thức khả thi là tích Descartes của các tham số này.
{2 pha, 4 pha}×{“nhóm dữ liệu”, dual-rails, multi-rails, …}×{chủ động, thụ động}
Đặc tả vi mạch bất đồng bộ
Như đã trình bày trước đây, các phương pháp đặc tả vi mạch bất đồng bộ có thể được chia làm 2 nhóm:
Các phương pháp đặc tả dựa vào ngôn ngữ đặc tả cấp cao
Các phương pháp đặc tả trung gian dựa vào đồ thị
Các ngôn ngữ đặc tả cấp cao rất thích hợp cho việc mô tả các chức năng toàn cục của hệ thống phức tạp có cấu trúc phân cấp và có tính mođun mà không phải quan tâm đến chi tiết hiện thực (giao thức truyền thông, mô hình vi mạch, …) trong khi các đồ thị thường được sử dụng cho các phân tích thời gian và quá trình tổng hợp Việc kết hợp cả hai cách tiếp cận trên cho phép chúng ta có thể vừa mô tả các hệ thống phức tạp, vừa thuận tiện cho việc phân tích thời gian, tổng hợp và tối ưu hóa vi mạch tạo ra
Một ngôn ngữ đặc tả cấp cao được dùng cho việc mô hình hóa vi mạch bất đồng bộ phức tạp nhờ vào mức trừu tượng cao của nó Tuy nhiên, các đặc tả này thường không thể được tự động tổng hợp thông qua các công cụ tổng hợp Các công cụ tổng hợp và các công nghệ đích thường áp đặt một vài ràng buộc (giới hạn) lên các đặc tả để các đặc tả này có khả năng tổng hợp Do đó người ta thường phải định nghĩa một tập con của ngôn ngữ có khả năng tổng hợp theo một công cụ tổng hợp nào đó
Nội dung phần này sẽ trình bày một ngôn ngữ đặc tả thích hợp cho vi mạch bất đồng bộ, gọi là ADL (“Asynchronous Description Language”) Đây là một sự điều chỉnh mở rộng của ngôn ngữ CHP (“Communication Hardware Processes”) [5] Nó được bổ sung thêm các khái niệm lấy ý tưởng từ VHDL để đáp ứng nhu cầu tổng hợp và mô phỏng mạch Kế tiếp, các nội dung về việc biểu diễn chức năng của vi mạch bất đồng bộ dưới dạng các đồ thị: PN-DFG (Petri Net – Data Flow Graph) cũng sẽ được trình bày tổng quan Việc kết hợp các loại đồ thị này không chỉ dùng để kiểm tra hình thức vi mạch (trước và sau tổng hợp) mà còn để hiện thực mối liên kết giữa phần front-end và phần back-end của công cụ thiết kế PAiD (sẽ được trình bày ở chương sau)
Các mạch bất đồng bộ được cấu tạo từ những khối chức năng giao tiếp với nhau thông qua các kênh truyền thông Các mạch này có thể có độ song song khá cao, dẫn đến việc sử dụng nhiều kênh truyền thông để mô tả chúng Vì vậy, việc tiếp cận các khái niệm về kênh truyền thông là điều bắt buộc Các mạch bất đồng bộ được mô tả bằng các quá trình đồng thời, giao tiếp với nhau bằng cách truyền và nhận tin nhắn trên các kênh truyền thông và sự gán biến tường minh Ngôn ngữ CSP ("Communicating Sequential Processes") được Hoare đề xuất [7] được coi là phương pháp thích hợp nhất cho mô tả này.
CHP là một ngôn ngữ do GS Alain Martin đề nghị [5] Đây là một biến thể từ ngôn ngữ CSP nhưng được bổ sung thêm các lệnh điều kiện (“guarded commands”) của Dijkstra [16]
Trong ngôn ngữ ADL đề nghị [3], chúng tôi bổ sung thêm một số cấu trúc cũng như một số ràng buộc để thích hợp trong việc đặc tả vi mạch bất đồng bộ Hạn chế chính của ngôn ngữ CHP là việc đặc tả gần với việc hiện thực vật lý VLSI CHP còn có rất nhiều hạn chế trong việc cung cấp các tiện nghi cấp cao cho người thiết kế như trong ngôn ngữ C hoặc VHDL, nhất là các kiểu dữ liệu và các tác vụ số học CHP chỉ có một kiểu dữ liệu duy nhất là kiểu luận lý (boole) Các kiểu dữ liệu khác được tạo ra dựa trên việc kết hợp các biến kiểu luận lý Các tác vụ trên các kiểu dữ liệu khác ngầm gọi các hàm xử lý kiểu boole Việc đặc tả các hệ thống phức tạp bằng ngôn ngữ này, so với các ngôn ngữ VHDL hoặc Verilog, rất khó khăn Tuy nhiên các ngôn ngữ VHDL hoặc Verilog lại là các ngôn ngữ dành cho vi mạch đồng bộ, không thích hợp cho vi mạch bất đồng bộ
Việc mở rộng trong ADL giúp người thiết kế dễ dàng trong việc đặc tả vi mạch bất đồng bộ, làm cho ngôn ngữ mạnh hơn, dễ đọc và hiệu quả hơn, thích hợp cho việc kiểm tra thông qua quá trình mô phỏng và việc hiện thực phần cứng thông qua quá trình tổng hợp Thực tế, việc mô hình hóa một cách có cấu trúc các vi mạch hoàn toàn chưa có trong phiên bản CHP ban đầu: tất cả các quá trình được cấu trúc “phẳng” Để có thể quản lý sự phức tạp của các hệ thống thực tế, môi trường thiết kế PAiD đã đề nghị một cách tiếp cận mô hình có phân lớp trong ngôn ngữ
ADL Cú pháp ADL lấy ý tưởng từ các ngôn ngữ đặc tả phần cứng, do đó chúng rất đơn giản và có qui tắc Tính phân cấp hoàn toàn dựa trên các quá trình và các thành phần Tính liên thông giữa các khối được hiện thực duy nhất thông qua các kênh truyền thông (không dùng các tín hiệu)
2.3.2 Biểu diễn trung gian vi mạch bất đồng bộ
Mạng Petri [27] là một mô hình đồ thị lưỡng phân dùng để mô hình hóa các dòng thông tin và dòng điều khiển trong các hệ thống, đặc biệt là các hệ thống mang tính bất đồng bộ và đồng thời Mạng Petri bao gồm 2 loại nút: hình tròn (gọi là place) biểu diễn các sự kiện và thanh ngang (gọi là transition) biểu diễn các điều kiện Token (biểu diễn bởi chấm đen) được gán cho nhiều place Tại một thời điểm, vị trí của các token trong mạng định nghĩa trạng thái của hệ thống
Hình 11 Ví dụ mạng Petri
Mạng Petri hoạt động tuân theo qui tắc sau: khi tất cả các place nối với một transition đều mang token và khi điều kiện tương ứng với transition đó đúng, các token được loại bỏ ra khỏi các place đó và các token mới được tạo ra trên các place đi ngay sau transition Khi các token di chuyển trong mạng, nó đi xuyên qua các transition trên đường di chuyển theo qui tắc trên và làm thay đổi trạng thái của hệ thống Sự di chuyển của các token đặc tả các nhánh thực thi khác nhau có thể của hệ thống
Một cách hình thức, mạng Petri được định nghĩa bởi bộ tứ (P, T, R, M0), trong đó:
R (PT) (TP): hàm quan hệ giữa các place và các transition
M0: (P→N) trạng thái ban đầu của mạng
Hàm quan hệ R được định nghĩa bởi bộ (Pre, Post):
Post: T×P→N tác động sau tương ứng với các cung
Pre mang các giá trị nguyên gán với các cung từ place đến transition trong khi Post mang các giá trị nguyên gán với các cung từ transition đến place
Hàm quan hệ R được định nghĩa trong dự án PAiD này là “Pre = 1” và “Post = 1” Nghĩa là số lượng token lớn nhất có thể di chuyển trong một cung bằng 1 Mạng Petri có đặc tính này được gọi là mạng bình thường (“ordinary network”) trong các tài liệu tham khảo
Một số định nghĩa cơ bản về mạng Petri:
Mạng Petri được gọi là giới hạn (bound) nếu tại một trạng thái bất kỳ của mạng, tất cả các place đều có một số giới hạn các token Mạng Petri giới hạn được đặc trưng bởi một không gian trạng thái hữu hạn
Mạng Petri được gọi là sống (live) nếu với mỗi trạng thái có khả năng đạt đến từ trạng thái ban đầu, tồn tại một chuỗi các transition sao cho mỗi transition có thể đi qua
2.3.2.2 Đồ thị dòng dữ liệu DFG (“Data Flow Graph”)
DFG biểu diễn sự phụ thuộc giữa các tác vụ và dữ liệu Giả thiết n ops là số tác vụ Đồ thị dòng dữ liệu G d (V, E) là một đồ thị có hướng trong đó tập các nút V = {v i ; i = 1, 2, …, n ops } tương ứng một-một với tập hợp các tác vụ Giả thiết rằng các tác vụ cần một hoặc nhiều toán hạng và tạo ra một hoặc nhiều kết quả Ví dụ phép cộng với 2 toán hạng cho kết quả một tổng và một cờ nhớ Tập hợp các cung có hướng E = {(v i , v j ) ; i, j = 1, 2, …, n ops } tương ứng với việc chuyển dữ liệu giữa các tác vụ Hình 12 trình bày một ví dụ về DFG
Hình 12 Đồ thị dòng dữ liệu cho biểu thức x := a + b*c*d + 1
2.3.2.3 Sự kết hợp giữa mạng Petri và đồ thị dòng dữ liệu (PN-DFG)
MÔI TRƯỜNG THIẾT KẾ TÍCH HỢP CHO VI MẠCH BẤT ĐỒNG BỘ - PAiD21
Giới thiệu
Mặc dù mạch bất đồng bộ hứa hẹn mang lại nhiều ưu thế so với mạch đồng bộ, số lượng ứng dụng bất đồng bộ hiện vẫn rất hạn chế Sự không tương thích của các công cụ phần mềm dành cho mạch đồng bộ, vấn đề nhiễu ảnh hưởng đến hoạt động của mạch, việc thiếu phương pháp thiết kế vi mạch bất đồng bộ cấp cao, … khiến vi mạch bất đồng bộ ít được dùng trong công nghiệp hiện tại Trong bối cảnh đó, một môi trường thiết kế và các công cụ trợ giúp thiết kế sẽ giúp cho sự quảng bá, sử dụng mạch bất đồng bộ trong các ứng dụng ngày nay Môi trường thiết kế PAiD đã được cho ra đời với mục đích thiết kế mạch bất đồng bộ dễ dàng hơn Mục đích cuối cùng của các công cụ này cùng với ngôn ngữ đặc tả và mô phỏng hiệu quả là tạo ra sơ đồ các cổng của mạch bất đồng bộ từ bản đặc tả hành vi cấp cao
Hình 14 trình bày qui trình thiết kế mạch bất đồng bộ được hiện thực trong môi trường PAiD Xuất phát từ bản đặc tả cấp cao theo ngôn ngữ ADL của vi mạch, các công cụ hỗ trợ thiết kế sẽ triển khai các khái niệm hiện thực (như truyền thông, tác vụ luận lý …) cho việc biến đổi vi mạch hướng về mức trừu tượng thấp hơn Công cụ tổng hợp mô hình hóa các tác vụ cấp cao với các toán tử tường minh (bằng cách dùng các thông tin: giao thức truyền thông, mã hóa dữ liệu, kiểu mạch hiện thực) Thông thường bước tổng hợp sẽ tạo ra các phương trình luận lý thực hiện một cách hiệu quả đặc tả ban đầu Tại bước này, quá trình tổng hợp có thể được thực hiện tự động với các tham số được định sẵn hoặc có sự can thiệp của người thiết kế để có thể tối ưu mạch ở mỗi mức phân cấp khác nhau
Ngoài ra, bước tổng hợp còn thực hiện một số phép phân tích mã ban đầu và mã trung gian Một số công cụ được phát triển để thực hiện các phép kiểm tra để loại bỏ sớm các trường hợp không thể hiện thực và các trường hợp có thể gây ra lỗi Một trong những phép kiểm tra quan trọng được thực hiện là kiểm tra tính khả tổng hợp của mạch thông qua các luật DTL
Hình 14 Qui trình thiết kế PAiD
Môi trường thiết kế PAiD mang lại những đóng góp trong những mặt sau:
Môi trường hoàn chỉnh bao gồm các công cụ hỗ trợ thiết kế mạch bất đồng bộ từ đặc tả cấp cao đến hiện thực cấp thấp
Đặc tả cấp cao mạch bất đồng bộ với độ phức tạp cao và mức độ phân cấp không giới hạn
Phương pháp tổng hợp có khả năng tạo ra mạch hiện thực theo các cấu trúc hiện thực khác nhau (QDI, …) và các tham số hiện thực (phương thức mã hóa dữ liệu, giao thức truyền thông), cho phép khảo sát các kiểu mạch khác nhau của cùng một đặc tả ban đầu
Phương pháp đồng mô phỏng (“co-simulation”) giữa hiện thực chức năng và phần cứng bằng cách dùng các công cụ phần mềm thương mại có sẵn
Môi trường PAiD được xây dựng bằng ngôn ngữ lập trình ANSI C, bao gồm hơn 50.000 dòng lệnh với một số thư viện API có thể được tái sử dụng để phát triển thêm các công cụ khác trong tương lai.
Giao tiếp người dùng
Môi trường PAiD được phát triển như một shell mà từ đó người dùng có thể gọi các công cụ để thực hiện các tác vụ khác nhau Nó thực ra là một bộ thông dịch các lệnh, trong đó các lệnh sẽ được xử lý và thông dịch: thay thế các biến trong lệnh, mở rộng lệnh với các alias, … Tùy vào lệnh và các tham số, các công cụ tương ứng sẽ được thực hiện để hoàn tất công việc mong muốn
Cũng giống như công cụ Design Compiler của Synopsys (dc_shell), ưu điểm của việc hiện thực môi trường theo kiểu shell như thế này là:
Các lệnh có thể được nhập theo chế độ tương tác hoặc theo một script, cho phép thực hiện tổng hợp mạch bất đồng bộ phức tạp theo một thứ tự định sẵn và theo thời điểm mong muốn
Các tác vụ thiết kế có thể được lặp lại và tiến triển liên tục Ví dụ, sau khi tối ưu hóa một thiết kế, nhà thiết kế có thể thực hiện các bước tiếp theo mà không phải lặp lại các bước ban đầu, vì các kết quả của các tác vụ trước vẫn được lưu trữ trong bộ nhớ để sử dụng trong các tác vụ tiếp theo Điều này giúp tiết kiệm thời gian và công sức, đồng thời cho phép cải tiến thiết kế theo thời gian.
Môi trường PAiD có nguyên tắc hoạt động của nó: các đối tượng sẽ cùng được lưu trữ trong bộ nhớ Các mạch bất đồng bộ cần thực hiện cho các tác vụ thiết kế và kết quả của các tác vụ này (cây cú pháp, mạng Petri, phương trình phụ thuộc, phương trình luận lý, sơ đồ các cổng,
…) sẽ được gán nhãn trong bộ nhớ để có thể phân biệt chúng Mỗi đối tượng sẽ được xác định nhờ vào kiểu đối tượng và tên do người dùng gán cho (hoặc có thể được gán tự động) Theo cách thức này, nhiều mạch có thể cùng lưu trữ trong bộ nhớ: mỗi mạch tương ứng với một tác vụ được thực hiện hoặc cùng một tác vụ nhưng với tham số khác nhau Ví dụ người thiết kế có thể thực hiện trên cùng mạch bất đồng bộ nhiều quá trình tổng hợp và tối ưu với các tham số khác nhau (giao thức truyền thông, công nghệ hiện thực, tham số tối ưu …) để có thể so sánh kết quả của chúng Lưu ý rằng, ta có thể liệt kê được tất cả các đối tượng hiện lưu trong bộ nhớ
Môi trường PAiD cũng có giao diện đồ họa, cho phép người dùng thực hiện các tác vụ thiết kế theo menu, khiến quá trình thiết kế dễ dàng hơn Hình 15 minh họa giao diện đồ họa của PAiD
Hình 15 Giao diện đồ họa người dùng GUI của PAiD
Bên cạnh những công cụ phục vụ cho quá trình thiết kế và quản lý thiết kế, PAiD còn là một môi trường làm việc thân thiện với người dùng Các ưu điểm nổi bật của môi trường PAiD bao gồm:
Có các lệnh cho người dùng biết tài nguyên (thời gian thực hiện, bộ nhớ) mà hệ thống hiện đang dùng trước và sau một tác vụ
Có cơ chế gợi nhớ và hoàn tất tên lệnh nhập hoặc tên tập tin (bao gồm cả đường dẫn thư mục)
Các lệnh đã thực hiện được lưu trữ trong bộ đệm và có thể gọi lại dễ dàng để thực hiện hoặc chỉnh sửa
Tất cả các lệnh của hệ điều hành có thể được thực hiện ngay trong môi trường PAiD, cho phép người dùng thực hiện một số lệnh của hệ điều hành mà không cần thoát khỏi PAiD.
Một số lệnh thông dụng của hệ điều hành như: cd, pwd, ls, … được coi như các lệnh của
PAiD và có thể được thực hiện trực tiếp trong PAiD
Các lệnh của PAiD có thể dễ dàng được cá nhân hóa bằng cách dùng alias
Các biến môi trường được định nghĩa trước trong hệ điều hành Unix/Linux có thể được dùng trong các lệnh hoặc các script của PAiD
Các thông tin giúp đỡ về cách sử dụng các lệnh PAiD có thể được tra cứu trực tuyến trong môi trường PAiD (tương tự lệnh man của hệ điều hành)
Ví dụ thiết kế
Phần này trình bày cách sử dụng môi trường thiết kế PAiD với một thiết kế bộ chọn lựa Selector Chương trình được đặc tả theo ngôn ngữ ADL (Hình 16) Tùy thuộc vào giá trị của kênh điều khiển C, giá trị của kênh nhập I sẽ được gởi ra một hoặc nhiều kênh xuất
Hình 16 Ví dụ thiết kế Selector
Sơ đồ cổng được tạo ra với thư viện cổng chuẩn được minh họa bên dưới
Hình 17 Sơ đồ các cổng dưới dạng EDIF 2.0
Hình 18 trình bày sơ đồ các cổng của mạch hiện thực
Hình 18 Sơ đồ cổng cho mạch Selector
Kết luận
Ngày nay, việc phát triển các công cụ trợ giúp thiết kế tự động cho mạch bất đồng bộ là một vấn đề quan trọng và khó khăn Sự ra đời của công cụ PAiD đã tạo điều kiện cho việc truyền bá việc sử dụng mạch bất đồng bộ trong các ứng dụng thực tế, biến các ưu điểm tiềm năng của mạch bất đồng bộ trở thành hiện thực Môi trường PAiD bao gồm phần front-end với bộ biên dịch ngôn ngữ cấp cao và bộ mô phỏng hành vi mạch và phần back-end với bộ tổng hợp mạch và hiển thị sơ đồ mạch Một cấu trúc biểu diễn trung gian mạch được dùng để phân biệt 2 phần này
Cấu trúc này dựa trên mạng Petri ở mức hành vi Bộ biên dịch sẽ biến đổi ngôn ngữ mô tả mạch cấp cao thành mạng Petri này Bộ tổng hợp sẽ thực hiện mạch QDI ở mức cổng từ cấu trúc mạng Petri
Bộ công cụ hoàn chỉnh này tạo ra môi trường cho phép người thiết kế mô tả mạch bất đồng bộ ở mức trừu tượng cao, sao đó tổng hợp tự động để tạo ra sơ đồ các cổng theo một thư viện công nghệ
Bộ công cụ PAiD đã được giới thiệu tại hội thảo quốc tế về Tính toán nâng cao và Ứng dụng (ACOMP) năm 2007 và hội nghị Khoa học Công nghệ 2007 trường Đại học Bách khoa TPHCM Ngoài ra nó còn được sử dụng trong các nghiên cứu của học viên cao học và sinh viên năm cuối trong các đề tài luận văn tốt nghiệp.
TỔNG QUAN PHƯƠNG PHÁP KIỂM ĐỊNH HÌNH THỨC
Giới thiệu chung
Ngày nay, các hệ thống phần cứng cũng như phần mềm ngày càng lớn mạnh Hệ thống dần trở nên phức tạp hơn và kéo theo đó là sự gia tăng về số lỗi có thể xảy ra Việc đoán trước cũng như xử lý các lỗi đó một cách kịp thời sẽ mang lại ý nghĩa vô cùng to lớn không những trên phương diện kỹ thuật mà còn trong cả kinh doanh Điều này chính là động lực của ngành kỹ thuật phần mềm (software engineering) Để đạt được mục tiêu tạo ra các hệ thống chính xác và ổn định, một trong những hướng tiếp cận là sử dụng các phương pháp hình thức (formal method) [15] Nó bao gồm hai hướng nhỏ là đặc tả hình thức (specification) và kiểm định hình thức (verification) Luận văn này tập trung vào hướng thứ hai là kiểm định hình thức
Kiểm định hình thức có hai phương pháp nổi bật là chứng minh toán học (theorem proving) và kiểm tra mô hình (model checking)
Phương pháp chứng minh toán học biểu diễn một hệ thống và các tính chất mong muốn thông qua các công thức được xây dựng dựa trên luận lý toán học Bằng cách sử dụng các định lý, tiên đề và quy tắc suy diễn, phương pháp toán học cho phép chứng minh tính đúng đắn của các hệ thống và tính chất một cách logic và chặt chẽ.
(mathematical logic) Sau đó, nó tìm cách chứng minh các tính chất dựa trên hệ thống các tiên đề được xây dựng sẵn
Phương pháp kiểm tra mô hình: Về bản chất, phương pháp này được thực hiện thông qua việc xây dựng một mô hình hữu hạn (finite model) để biểu diễn hệ thống Các tính chất sẽ được biểu diễn bằng các công thức luận lý thời gian Sau đó, nó sẽ kiểm tra xem tính chất mong muốn đó có đúng trong mô hình biểu diễn không.
Chứng minh toán học
Việc chứng minh định lý toán học là phương pháp tiếp cận truyền thống để kiểm tra các hệ thống đồng thời, bao gồm cả các mạch bất đồng bộ Sử dụng logic hình thức để thể hiện cả phần đặc tả và phần hiện thực của mạch, các nhà nghiên cứu sau đó sẽ trình bày các phép suy luận hoặc mối quan hệ tương đương giữa hai thành phần này thông qua một phép chứng minh Những phép suy luận này được thực hiện dựa trên một hệ thống hình thức có chứa các tiên đề và quy luật suy luận Ví dụ, [40] sử dụng luận lý bậc cao để mô hình hóa tất cả các khía cạnh của mạch, bao gồm cấu trúc, hành vi và thông tin thời gian trễ, và thành công trong việc kiểm tra bộ cộng toàn phần n bit.
Trong phương pháp chứng minh toán học, các công cụ chứng minh toán học (theorem prover) được xây dựng như là một chương trình máy tính với mong muốn tự động hóa quá trình chứng minh cho các vấn đề kiểm định Ngày nay, các công cụ chứng minh toán học đã được ứng dụng nhiều để kiểm định tính chất an toàn (safety-critical) trong lĩnh vực thiết kế phần cứng cũng như phần mềm
Một trong những ưu điểm nổi bật nhất của phương pháp chứng minh toán học bao là: Nó có thể được áp dụng đối với các hệ thống có không gian trạng thái vô hạn Khả năng này tùy thuộc vào các kỹ thuật được sử dụng như giảm thiểu về mặt cấu trúc (structrural induction) Đặc thù của phương pháp chứng minh toán học dựa trên các tiên đề, các luật suy luận Điều này giúp cho người sử dụng nắm bắt được hệ thống cũng như các tính chất cần kiểm định một cách chuyên sâu hơn
Tùy theo mục đích sử dụng, có thể phân chia các công cụ chứng minh toán học theo hai loại như sau:
Hệ thống hoàn toàn tự động được xây dựng dựa trên những chương trình có mục đích chung
(general-purpose) Những chương trình như vậy thích hợp cho việc kiểm định những vấn đề tổng hợp
Hệ thống bán tự động được xây dựng dựa trên những chương trình chuyên dụng (special- purpose) Những hệ thống này có điểm đặc biệt là có thể tương tác với người sử dụng trong quá trình kiểm định
Các công cụ chứng minh toán học đã được phát triển và tận dụng thành công trong việc kiểm định vi mạch bất đồng bộ Ví dụ, công cụ chứng minh của Boyer-Moore đã được dùng để kiểm chứng cả thuộc tính tin cậy (safety) lẫn tính chất sống động (liveness) của một FIFO bất đồng bộ [50] với n nút và nhạy cảm với độ trễ Tuy nhiên, sự khó khăn trong việc tự động hoá hoàn toàn quá trình kiểm định là khuyết điểm lớn nhất và phổ biến nhất của các thiết bị chứng minh định lý toán học Đặc biệt với những định lý toán học có độ khó cao, người dùng phải tự chứng minh
Một số công cụ chứng minh toán học nổi tiếng có thể kể đến như sau :
Coq [61] là hệ thống chứng minh hình thức (formal proof) cung cấp các phương pháp chứng minh có tính tương tác Coq bao gồm các giải thuật đưa ra quyết định tự động hoặc bán tự động Coq cho phép người sử dụng có thể định nghĩa các phương pháp chứng minh riêng
HOL [41] là một công cụ chứng minh toán học trong luận lý cấp cao (higher-order logic)
HOL có một ưu điểm nổi trội đó là tính tái lập trình (programmability) cao thông qua ngôn ngữ ML [49] Hệ thống HOL được sử dụng rất rộng rãi để hình thức hóa giải quyết các vấn đề toán học Hơn thế nữa, HOL còn được ứng dụng để kiểm định các vấn đề về phần cứng trong công nghiệp.
Kiểm tra mô hình
Kiểm định hình thức kiểm tra mô hình được đề xuất đầu tiên bởi Clarke, Emerson, Queille và Sifakis [15] Nó có thể được định nghĩa như sau :
“Kiểm tra mô hình là một kỹ thuật kiểm tra tự động để kiểm tra một cách có hệ thống các hành vi của một mô hình hệ thống xem có thỏa mãn một tính chất hình thức cần kiểm tra hay không.”
Một phương pháp kiểm tra mô hình thường có 3 bước chính (Hình 19):
Hình thức hóa Yêu cầu
Tính chất cần kiểm tra
Vi phạm à Phản ví dụ
Giả lập Vị trí lỗi
Hình 19 Sơ đồ thực hiện kiểm tra mô hình
Bước mô hình hóa: mô hình một hệ thống thực và tính chất cần kiểm tra thành một mô hình hình thức và tính chất bằng các ngôn ngữ đặc tả
Bước kiểm tra: kiểm tra tính chất đó trong mô hình
Nếu tính chất được thỏa: Kết luận hệ thống thỏa mãn tính chất kiểm tra Quá trình kiểm định kết thúc
Nếu tính chất không thỏa (vi phạm): Tạo ra phản ví dụ (counter-example) (và giả lập nó nếu có thể) nếu tính chất không được thỏa trong mô hình Sau đó chúng ta có thể chỉnh sửa lại mô hình và tiếp tục kiểm tra lại
4.3.3 Vấn đề bùng nổ không gian trạng thái
Kiểm tra mô hình đã phát triển và trở thành một phương pháp kiểm định hình thức hiệu quả nhất trong lĩnh vực kiểm định mạch bất đồng bộ Với việc vận dụng phương pháp này, D L
Dill và E M Clarke đã thành công trong việc kiểm định một mạch trọng tài bất đồng bộ
(asynchronous arbiter) [10] Điều này càng chứng minh rõ rệt tính khả thi của phương pháp kiểm tra mô hình trong việc kiểm định mạch bất đồng bộ Tuy nhiên, vấn đề bùng nổ trạng thái (state explosion problem) là vấn đề bức thiết của phương pháp này Điều đó giải thích tại sao hầu hết các nghiên cứu trong lĩnh vực này đều tập trung giải quyết khiếm khuyết này Đã có nhiều phương pháp được nghiên cứu để giải quyết vấn đề bùng nổ trạng thái, tiêu biểu là bốn kỹ thuật sau:
Biểu diễn ký hiệu (symbolic representation)
Kỹ thuật rút gọn thứ tự cục bộ (partial order reduction)
Kỹ thuật trừu tượng hóa (abstraction)
Kỹ thuật tổng hợp (composition)
4.3.3.1 Kỹ thuật biểu diễn ký hiệu
Kỹ thuật biểu diễn ký hiệu hỗ trợ quá trình mô tả tập hợp trạng thái của hệ thống thông qua các cấu trúc như biểu đồ quyết định nhị phân (BDD) hoặc dạng chuẩn liên hợp (CNF) Từ đó, một thuật toán phù hợp sẽ được sử dụng để xử lý các cấu trúc này Một ứng dụng điển hình của phương pháp này là xác minh thành công ngăn xếp bất đồng bộ với hơn 10^50 trạng thái.
[28] Điều này cho thấy thế mạnh đặc biệt của kĩ thuật này Một công cụ nổi tiếng áp dụng kỹ thuật này là NuSMV Nó là một phần mềm mã nguồn mở dùng để kiếm chứng các tính chất được biểu diễn dưới dạng các công thức thời gian (temporal formulas)
4.3.3.2 Kỹ thuật rút gọn thứ tự cục bộ
Kỹ thuật rút gọn thứ tự cục bộ dựa vào tính độc lập của các sự kiện để giảm số lượng các trạng thái cần tìm kiếm Ví dụ, trong [20], khi dùng công cụ kiểm tra mô hình COSPAN để kiểm tra thuộc tính hazard-freedom đối với những mạch độc lập tốc độ (speed-independent circuits – những mạch bất đồng bộ có độ trễ các cổng là bất kỳ), kĩ thuật rút gọn thứ tự cục bộ đã giảm thiểu một số lượng đáng kể về thời gian tính toán của CPU cũng như không gian bộ nhớ được dùng trong việc kiểm định
4.3.3.3 Kỹ thuật tr u tượng hoá
Kỹ thuật trừu tượng hoá cũng được sử dụng để khử những chi tiết không thích hợp trong đặc tả như những biến không cần thiết hay những dữ liệu đặc trưng… Qua đó giảm bớt số lượng trạng thái được tìm kiếm Trong bài báo đã đăng, K Qian và A Nymeyer đã sử dụng kĩ thuật trừu tượng hoá như một chỉ dẫn thông minh (heuristic) trong quá trình tìm kiếm sự vi phạm hay lỗi thông qua không gian trạng thái [33] T H Bui và A Nymeyer cũng đã tận dụng tính heuristic của kĩ thuật trừu tượng hoá cho việc hướng dẫn những bước đi ngẫu nhiên (random walk) nhằm giúp quá trình tìm kiếm vi phạm trở nên nhanh hơn đáng kể [55][56]
4.3.3.4 Kỹ thuật tổng hợp – phân tích
K thuật tổng hợp – phân tích tính chất kiểm định thành những tính chất mô tả hành vi của từng thành phần nhỏ của mạch Từ đó việc chứng minh sự đúng đắn của hệ thống được thiết lập dựa trên các phép chứng minh của những phần nhỏ đó Các kỹ thuật trên có thể được sử dụng thái Các nhà nghiên cứu H Zheng, H Yao và T Yoneda đã kết hợp kĩ thuật trừu tượng hoá và kĩ thuật tổng hợp để cải tiến độ hiệu quả phép kiểm chứng bằng cách lặp đi lặp lại quá trình tinh lọc sự trừu tượng của mỗi thành phần [21]
4.3.3.5 Công cụ kiểm tra mô hình
Một số công cụ kiểm tra mô hình tiêu biểu như sau :
NuSMV [2] được phát triển bởi sự hợp tác giữa trường đại học CMU (Carnegie Mellon University) và viện IRST (Istituto per la Ricerca Scientifica e Tecnolgica) Tiền thân của nó là công cụ SMV [32] – công cụ kiểm tra mô hình đầu tiên sử dụng cây quyết định nhị phân BDD để giải quyết vấn đề bùng nổ không gian trạng thái
Spin [17] là một dạng công cụ kiểm tra mô hình sử dụng luận lý thời gian (temporal logic)
Spin sử dụng kỹ thuật rút gọn thứ tự cục bộ để giải quyết vấn đề bùng nổ không gian trạng thái
PVS [52] là một dạng công cụ kiểm tra hình thức lai giữa kiểm tra mô hình và chứng minh toán học Thành phần kiểm tra mô hình trong công cụ PVS sử dụng luận lý phương thức (modal mu-calculus).
PHƯƠNG PHÁP KIỂM ĐỊNH VI MẠCH BẤT ĐỒNG BỘ
Tổng quan phương pháp kiểm định đề xuất
Dựa trên những nghiên cứu về kiểm định hình thức, phương pháp kiểm tra mô hình cho thấy những ưu điểm của nó nếu được ứng dụng vào kiểm định vi mạch bất đồng bộ
Phương pháp kiểm tra mô hình là giải pháp hiệu quả giúp đơn giản hóa quá trình thẩm định so với phương pháp chứng minh toán học Ưu điểm nổi bật của phương pháp này là giảm thiểu nhu cầu về hiểu biết toán học nâng cao, một trở ngại thường gặp phải khi áp dụng phương pháp chứng minh toán học.
Với sự phát triển vượt bậc của công nghệ, hệ thống máy tính ngày càng mạnh mẽ hơn Sự ra đời của điện toán đám mây (cloud) cho phép kết nối nhiều hệ thống máy tính lại với nhau, tạo thành một nguồn tài nguyên tính toán khổng lồ Điều này mở ra khả năng sử dụng các hệ thống máy tính hiện đại để kiểm tra tính toán, tận dụng sức mạnh tính toán to lớn này để nâng cao hiệu quả và tốc độ kiểm tra.
Phương pháp kiểm tra mô hình cho phép chỉ ra các sai sót thiết kế với thời gian rất nhanh
Ngoài ra, nó còn hỗ trợ người thiết kế bằng cách chỉ ra một qui trình ví dụ dẫn đến việc sai sót đó Điều này thực sự rất có ý nghĩa đối với người sử dụng Phương pháp chứng minh toán học không có được lợi điểm này
Với những ưu điểm nêu trên, qui trình kiểm định hình thức cho vi mạch bất đồng bộ được xây dựng dựa trên phương pháp kiểm tra mô hình Khi lựa chọn kiểm tra mô hình, một vấn đề cần phải đặc biệt quan tâm là giải quyết vấn đề tối quan trọng của nó – bủng nổ không gian trạng thái Kỹ thuật được lựa chọn sử dụng là biểu diễn không gian trạng thái theo hướng sử dụng ký tự biểu diễn (symbolic) Nói một cách khác, phương pháp kiểm tra mô hình được lựa chọn sẽ sử dụng cây quyết định nhị phân (BDD – Binary Decision Diagram) để làm tăng kích thước không gian trạng thái có thể biểu diễn được
Như phân tích ở trên, kiểm định hình thức được coi là một hướng tiếp cận đầy hứa hẹn trong kiểm định vi mạch bất đồng bộ Trên cơ sở đó, quy trình kiểm định vi mạch bất đồng bộ được đề xuất bao gồm những công đoạn chính như sau:
Mô tả cấp cao vi mạch bất đồng bộ: Vi mạch bất đồng bộ sẽ được đặc tả ở mức trừu tượng hóa cao sử dụng ADL hoặc CHP Quá trình này cho phép đơn giản hóa công việc của người thiết kế
Tổng hợp mô hình biểu diễn trung gian PN-DFG: Dựa trên bản đặc tả bằng ADL/CHP, bộ công cụ hỗ trợ thiết kế PAiD sẽ xây dựng mô hình trung gian PN-DFG tương ứng Mô hình PN-DFG cho phép tiến hành các hành vi giả lập hoặc kiểm định một cách thuận lợi
Sử dụng công cụ kiểm tra mô hình để kiểm định mô hình PN-DFG: Nhằm đánh giá tính khả thi của hướng tiếp cận sử dụng phương pháp kiểm tra mô hình, một công cụ có sẵn sẽ được lựa chọn sử dụng Việc này có ưu điểm sẽ tận dụng được các thành quả nghiên cứu trong thời gian dài của công cụ kiểm định; ngoài ra, nó còn tiết kiệm được thời gian xây dựng bộ công cụ mới Việc thực thi công cụ kiểm định sẽ bao gồm các công đoạn chính như sau:
Biểu diễn mô hình trung gian PN-DFG dựa theo ngôn ngữ đầu vào của công cụ kiểm định
Biểu diễn các yêu cầu thiết kế vi mạch bất đồng bộ sử dụng ngôn ngữ hỗ trợ bởi công cụ kiểm định
Sau khi có đầy đủ thông tin đặc tả, công cụ kiểm tra mô hình sẽ được thực thi để lấy kết quả kiểm định
Đưa ra ví dụ cho những sai sót thiết kế nếu có: Trong trường hợp thiết kế không thỏa mãn yêu cầu mong muốn, quá trình thực thi công cụ kiểm tra mô hình sẽ trả về một ví dụ (counter-example) chỉ ra luồng thực thi dẫn đến sai sót đó
Hình 20 là lược đồ tổng quát cho qui trình kiểm định vi mạch bất đồng bộ sử dụng phương pháp kiểm tra mô hình
Nhờ những tiện ích của công cụ thiết kế PAiD, người dùng có thể dễ dàng tạo mô hình PN-DFG từ đặc tả cấp cao ADL/CHP Tuy nhiên, vẫn còn một vấn đề, đó là làm thế nào để tái biểu diễn mô hình này vào công cụ kiểm tra tương ứng để tiến hành kiểm định.
Yêu cầu vi mạch Đặc tả cấp cao (ADL/CHP)
Tái biểu diễn Hình thức hóa
Tính chất cần kiểm tra
Công cụ kiểm tra mô hình
Vi phạm à Phản ví dụ
Vị trí lỗi Thỏa mãn Đúng
Hình 20 Qui trình tổng quát kiểm định vi mạch bất đồng bộ
Công cụ kiểm tra mô hình NuSMV
Qui trình kiểm định vi hình thức mạch bất đồng bộ lựa chọn sử dụng công cụ kiểm tra mô hình nổi tiếng là NuSMV
NuSMV [2] là một công cụ kiểm tra mô hình được phát triển bởi sự hợp tác giữa trường đại học CMU và viện IRST NuSMV được xây dựng như một nền tảng cung cấp đầy đủ các tính năng cho việc nghiên cứu cũng như ứng dụng trong công nghiệp của kiểm tra mô hình Nó được phát triển một cách bền vững trên cơ sở mã nguồn mở với đầy đủ tài liệu rõ ràng Ngoài ra, để có thể ứng dụng trong công nghiệp, NuSMV còn được thiết kế theo các tiêu chuẩn công nghiệp và có khả năng hỗ trợ nhiều ngôn ngữ mô tả khác nhau [2]
NuSMV là bộ công cụ được thực hiện từ sự mở rộng của SMV [14] Có thể xem xét những cải tiến trên ba phương diện như sau :
Chức năng hệ thống: NuSMV bổ sung thêm những tính năng cho phép người sử dụng nâng cao sự tương tác với phần mềm bằng dòng lệnh (command line mode) hoặc bằng giao diện
Người dùng có thể linh động sử dụng GUI để tối ưu hóa và kiểm soát sự bùng nổ trạng thái (state expolution) trong quá trình thực thi công cụ.
Kiến trúc hệ thống: NuSMV được thiết kế với sự phân hóa cao Nó bao gồm nhiều khối chức năng mà tùy theo nhu cầu sử dụng có thể được lược bỏ NuSMV cũng cho phép người sử dụng thêm vào những khối chức năng khác một cách dễ dàng Điều này làm tăng tính mở (open) của NuSMV
Khả năng hệ thống: NuSMV được cải tiến để có thể thực thi công việc một cách ổn định và dễ dàng cho người sử dụng đọc hiểu cũng như thay đổi mã nguồn
Mã nguồn công cụ kiểm tra mô hình NuSMV được tải miễn phí từ trang web chính của nó: http://nusmv.fbk.eu/
5.2.2 Ngôn ngữ đặc tả SMV
Công cụ kiểm định NuSMV thừa kế lại hệ thống ngôn ngữ đầu vào của SMV Nó được gọi tên là ngôn ngữ đặc tả SMV Dựa theo mục đích sử dụng có thể xem ngôn ngữ đặc tả SMV bao gồm 3 thành phần chính là ngôn ngữ khai báo (definition language), ngôn ngữ đặc tả cấu trúc (structural language) và ngôn ngữ biểu diễn các biểu thức (expression)
Thành phần khai báo có chức năng tương tự những ngôn ngữ lập trình khác Nó dùng để khai báo các tín hiệu và mối liên hệ giữa chúng Hai chức năng sử dụng thông thường là khai báo kiểu (type) và gán trước (assignment)
Ngôn ngữ mô tả SMV chỉ cung cấp các kiểu dữ liệu cơ bản cho mô hình hệ thống trạng thái hữu hạn, bao gồm kiểu logic boolean, kiểu số nguyên với định nghĩa miền và kiểu liệt kê các giá trị tượng trưng.
5.2.2.2 Ngôn ngữ đặc tả cấu trúc
Thành phần đặc tả cấu trúc cung cấp các chức năng để kết nối các thành phần trong một hệ thống Nó cho phép định nghĩa các cấu trúc dữ liệu thông thường cũng như cấu trúc có điều kiện Điều này giúp cho người sử dụng mô tả các hệ thống chuyển trạng thái dễ dàng hơn
Các hệ thống phức tạp có thể được phân ra thành nhiều thành phần nhỏ Chúng sẽ được mô tả thành từng khối (module) riêng biệt trong NuSMV Ngôn ngữ đặc tả SMV cung cấp chức năng để kết nối các module đó lại thành một hệ thống lớn hơn Hơn thế nữa, ngôn ngữ này còn cho phép người dùng có thể tái sử dụng những module nhỏ đó Việc kết nối các module này có thể được thực hiện theo cơ chế đồng bộ (synchronous) hoặc bất đồng bộ (asynchronous) tùy theo từng trường hợp cụ thể của hệ thống cần biểu diễn Ngoài ra, ngôn ngữ đặc tả SMV cũng cho phép biểu diễn cả hệ thống xác định (deterministic) hoặc không xác định (non-deterministic)
5.2.2.3 Ngôn ngữ biễu diễn biểu thức
Thành phần biễu diễn biểu thức có chức năng mô tả các tính chất cần kiểm định dựa theo ngôn ngữ cụ thể Ngôn ngữ đặc tả SMV cho phép các biểu thức được biểu diễn dưới dạng luận lý thời gian (temporal logic) Cụ thể, ngôn ngữ SMV chỉ sử dụng các công thức CTL (Computation Tree Logic) Ở thành phần này, công cụ NuSMV có sự mở rộng so với SMV Ngoài công thức CTL, các biểu thức kiểm định còn có thể được diễn đạt các dạng luận lý thời gian khác như LTL (Linear Temporal Logic) và PSL (Property Specification Language) Điều này làm cho công cụ NuSMV có sự linh động cũng như phong phú hơn trong việc mô tả các tính chất mong muốn đối với hệ thống.
Phân rã mô hình trung gian PN-DFG
Quá trình phân tích cụ thể hóa mô hình PN-DFG nhằm bổ sung đầy đủ thông tin chi tiết về giao thức truyền thông chưa được xác định trong mô hình trừu tượng PN-DFG, tạo điều kiện thuận lợi cho việc biểu diễn trong công cụ kiểm tra mô hình NuSMV.
Các tác vụ trên kênh truyền cần phải được phân rã bao gồm:
Tác vụ truyền (transmission): Trong ADL, nó được kí hiệu là “”
Tác vụ kiểm tra kênh truyền (probe): Ký hiệu trong ADL là “#”
Hình 21 minh họa các mô hình PN-DFG của các tác vụ nêu trên Dựa theo ADL, phần (a) mô tả tác vụ “C > x” và phần (c) mô tả “#C” Trong đó, C là ký hiệu của kênh truyền thông; x là biến lưu giá trị cần truyền nhận
C > x # C a) Tác vụ truyền b) Tác vụ nhận c) Tác vụ probe
Như đã trình bày ở các phần trên, mạch bất đồng bộ được thể hiện thông qua các tiến trình độc lập Những tiến trình này chỉ có thể giao tiếp và đồng bộ hoạt động với nhau thông qua kênh truyền tin.
Khi thực hiện phân ra các tác vụ trên kênh truyền, cần phải xem xét đến yếu tố:
Duy trì tính độc lập của các tiến trình Nói cách khác, sau khi phân rã, chúng vẫn được biểu diễn là hai tiến trình và có thể sử dụng một số tín hiệu để đồng bộ với nhau Tất nhiên, các tín hiệu đồng bộ đó là rõ ràng, chi tiết và dễ dàng biểu diễn được vào NuSMV Luận văn sẽ trình bày đầy đủ hai hướng đi với câu hỏi này và đặt tên hai phương pháp tương ứng như sau:
Phương pháp truyền thống : duy trì hai tiến trình
Phương pháp giảm kênh : nhập kết hợp hai tiến trình thành một
Nội dung cũng như lý do thực hiện của hai phương pháp sẽ được phân tích rõ trong các phần tiếp theo
Giao thức nào sẽ được sử dụng để phân rã các tác vụ đó Có 2 giao thức truyền thông sẽ được sử dụng để phân rã mô hình PN-DFG, bao gồm giao thức truyền thông 2 pha và giao thức truyền thông 4 pha Nội dung của hai giao thức này được trình bày ở Chương 2 – Tổng quan thiết kế vi mạch bất đồng bộ
Trong phương pháp truyền thống, các tác vụ trừu tượng trên kênh truyền sẽ được biểu diễn lại chi tiết hơn Việc biểu diễn này sẽ đòi hỏi phát sinh một số place, transition hay thậm chí là biến phụ cho từng tiến trình Tuy nhiên, nó vẫn đảm bảo duy trì được hai tiến trình như ban đầu
Hai giao thức bắt tay 2 pha và 4 pha sẽ được áp dụng để phân tích trong phương pháp này
5.3.1.1 Mô hình PN-DFG 2 pha
Các tác vụ truyền, nhận và kiểm tra kênh truyền được phân ra theo giao thức 2 pha như sau: a) Tác vụ truyền
Tác vụ truyền được phân rã theo giao thức 2 pha sẽ bao gồm các bước như sau (như mô tả ở Hình 22):
Truyền dữ liệu ra kênh truyền: thể hiện qua place P0 (C := x)
Đảo tín hiệu REQ: thể hiện qua place P1 (C_req = !C_req) Theo đó, tín hiệu REQ sẽ được thay đổi giá trị (0 thành 1 hoặc 1 thành 0) để thông báo cho bên nhận biết là đã có dữ liệu mới Lưu ý với transition T2: nó được sử dụng để đảm bảo quá trình ghi dữ liệu lên kênh truyền trước khi thay đổi tín hiệu REQ Điều kiện (DFG) gắn với T2 luôn có giá trị đúng (TRUE)
Đợi tín hiện ACK thay đổi từ bên nhận: thể hiện qua transistion T3 Transition này chỉ fired khi DFG tương ứng với nó (C_ack_old != C_ack) được đánh giá là đúng Trong đó, biến C_ack_old lưu giá trị của tín hiệu ACK trước khi dữ liệu được ghi lên đường truyền; biến C_ack lưu giá trị tín hiệu ACK ở thời điểm hiện tại
Cập nhật giá trị của tín hiệu ACK mới: thể hiện qua place P2 (C_ack_old := C_ack) Theo đó, biến C_ack_old được cập nhật giá trị mới là C_ack
Hình 22 PN-DFG 2 pha biểu diễn tác vụ truyền
Như vậy, tác vụ truyền đã được phân tích thành mô hình PN-DFG mới, trong đó chỉ bao gồm các tác vụ gán và so sánh Dễ dàng nhận thấy, các tác vụ đó đều được hỗ trợ bởi ngôn ngữ đặc tả SMV Điều này cho phép sự chuyển đổi qua công cụ NuSMV có thể được thực hiện b) Tác vụ nhận
Tương tự như tác vụ truyền, tác vụ nhận theo giao thức 2 pha sẽ bao gồm các bước sau (như mô tả ở Hình 23):
Lắng nghe kênh truyền: thể hiện qua transition T2 (C_req_old != C_req) Trong đó, C_req_old là giá trị của tín hiệu REQ cuối cùng của phiên truyền nhận trước hoặc giá trị khởi tạo của tín hiệu REQ trong trường hợp chưa có phiên truyền nhận nào xảy ra Theo đó, bên nhận sẽ đợi cho đến khi có sự thay đổi giá trị của tín hiệu REQ (1 xuống 0 hoặc 0 lên 1) để qua bước đọc dữ liệu
Đọc giá trị dữ liệu: thể hiện qua place P1 (x := C)
Cập nhật lại giá trị của tín hiệu REQ mới: thể hiện qua place P2 (C_req_old := C_req) Theo đó, giá trị của biến C_req_old được cập nhật giá trị mới là C_req Lưu ý, bước này có thể được thực hiện song song với bước đọc giá trị dữ liệu
Đảo tín hiệu ACK: thể hiện qua place P3 (C_ack = !C_ack) Giá trị của tín hiệu C_ack được thay đổi (1 xuống 0 hoặc 0 lên 1) để thông báo cho bên truyền biết được quá trình truyền nhận kết thúc Transition T3 được thêm vào để đám bảo việc đảo tín hiệu ACK được thực hiện sau khi hoàn thành đọc giá trị của kên truyền
Hình 23 PN-DFG 2 pha biểu diễn tác vụ nhận c) Tác vụ probe
Tác vụ probe nhằm mục đích kiểm tra có sự kích thích kênh truyền hay không Trong giao thức 2 pha, nó tương đương với kiểm tra xem có sự thay đổi giá trị tín hiệu REQ của kênh truyền hay không Hình 24 biểu diễn PN-DFG cho tác vụ probe Trong đó, T0 (C_req_old !C_req) có nhiệm vụ kiểm tra sự thay đổi giá trị của tín hiệu REQ
Hình 24 PN-DFG 2 pha biểu diễn tác vụ probe
5.3.1.2 Mô hình PN-DFG 4 pha
Mô hình trung gian PN-DFG phân tích theo giao thức truyền thông 4 pha được tiến hành tương tự với giao thức truyền thông 2 pha Các tác vụ cần phải được phân rã cũng bao gồm 3 tác vụ truyền, nhận và probe a) Tác vụ truyền
Tác vụ truyền thể hiện theo giao thức truyền thông 4 pha sẽ bao gồm các bước cơ bản sau (như mô tả ở Hình 25) :
Ghi dữ liệu ra kênh truyền: place P0 (C := x)
Bật tín hiệu REQ: place P1 (C_req := 1) Theo đó, bên nhận sẽ được thông báo rằng dữ liệu đã sẵn sàng
Đợi tín hiệu tích cực của ACK: transition T3 (C_ack = 1) để chắc chắn bên nhận đã đọc xong dữ liệu
Hạ tín hiệu REQ: place P2 (C_req := 0), tái thiết lập (reset) kênh truyền thông
Đợi tín hiệu ACK được hạ xuống: transition T4 (C_ack = 0) Sau đó kết thúc phiên truyền nhận
Hình 25 PN-DFG 4 pha biểu diễn tác vụ truyền b) Tác vụ nhận
Mô hình PN-DFG của tác vụ nhận phân tích theo giao thức truyền thông 4 pha sẽ trải qua các bước sau (như mô tả trong Hình 26):
Đợi tín hiệu REQ tích cực: transition T2 (C_req = 1) để bắt đầu 1 phiên truyền nhận
Đọc dữ liệu từ kênh truyền: place P1 (x := C)
Tích cực tín hiệu ACK: place P2 (C_ack := 1), thông báo bên truyền biết là bên nhận đã nhận được dữ liệu
Đợi tín hiệu REQ được hạ xuống: transition T4 (C_req = 0), chuẩn bị reset kênh truyền thông
Hạ tín hiệu ACK: place P3 (C_ack := 0), kết thúc 1 phiên truyền nhận
Hình 26 PN-DFG 4 pha biểu diễn tác vụ nhận c) Tác vụ probe
Tác vụ probe trong giao thức truyền thông 4 pha cũng chính là sự lắng nghe kênh truyền để nhận biết được có kích thích ở tín hiệu REQ Hình 27 mô tả mô hình PN-DFG 4 pha cho tác vụ probe
Hình 27 PN-DFG 4 pha biểu diễn tác vụ probe
Mô hình trung gian PN-DFG trong NuSMV
Quá trình biểu diễn mô hình trung gian PN-DFG bằng ngôn ngữ đặc tả SMV được thực hiện thông qua các quá trình sau:
Phân rã mô hình PN-DFG: Quá trình này đã được trình bày ở phần trước của luận văn
Biểu diễn mô hình chi tiết PN-DFG trong NuSMV
Biểu diễn hiệu quả toàn bộ hệ thống trong NuSMV
Trong phần này, các qui trình để thực hiện hai bước biến đổi sau sẽ được trình bày và phân tích
5.4.1 Biểu diễn mô hình chi tiết PN-DFG trong NuSMV
Mô hình trung gian PN-DFG được chuyển đổi để biểu diễn trong công cụ kiểm tra mô hình NuSMV nhờ vào sự xem xét các thành phần tương đương trong mô hình PN-DFG và trong công cụ NuSMV Lấy cơ sở mô hình PN-DFG, có những vấn đề quan trọng cần phải được đánh giá là: place, transition thuộc mạng Petri nets và các biểu thức DFG Chúng sẽ được mô tả chi tiết tiếp theo sau đây
Petri nets trong mô hình PN-DFG là dạng safe-Petri net, trong đó mỗi place chỉ chứa tối đa là 1 token Do đó, mỗi place chỉ có 2 trạng thái là không có token hoặc có 1 token Như vậy, mỗi place có thể được biểu diễn bằng một biến có 2 giá trị trong ngôn ngữ đặc tả SMV Để thuận tiện cho việc sử dụng sau này, biến đó được khai báo kiểu luận lý (Boolean) với giá trị đúng (true) khi và chỉ khi place tương ứng chứa token
Ngoài ra, để đơn giản hóa việc biểu diễn, trong NuSMV, tất cả các place được gom lại và được mô tả thành một mảng các biến luận lý Việc khai báo này được thực hiện dưới từ khóa
Mỗi transistion đều đi liền với một điều kiện thực thi (firing) cụ thể Các điều kiện đó bao gồm: điều kiện thực thi trong mạng Petri nets và điều kiện để DFG tương ứng với nó được đánh giá là đúng Trong NuSMV, để mô tả hệ thống một cách rõ ràng, những điều kiện này được khai báo từ đầu bằng cách khai báo những biến luận lý tương ứng dưới từ khóa “DEFINE”
Sự thực thi của một transition sẽ được diễn đạt như sau:
Thay đổi giá trị của các biến place: các place đầu vào tương ứng với transition này sẽ có giá trị mới là sai (false); các place đầu ra sẽ có giá trị mới là đúng (true); các place khác giữ nguyên giá trị Có thể thấy rằng, nhờ sử dụng kiểu luận lý cho các biến biểu diễn place, sự thay đổi giá trị các biến place có thể được mô tả tổng quát là: Đảo ngược giá trị luận lý của những place liên quan đến transition tương ứng và giữ nguyên giá trị những place khác
Thực thi tất cả tác vụ mô tả bởi DFG ứng với tất cả các place đầu ra Chi tiết cụ thể sẽ được mô tả ở phần biểu diễn DFG dưới đây
Các biến được sử dụng trong các DFG của hệ thống thông thường là các biến nguyên (integer) Trong NuSMV, chúng sẽ được khai báo cùng lúc với biến place dưới từ khóa “VAR”
Quan sát các DFG được sử dụng trong mô hình trung gian PN-DFG, có thể thấy rằng có hai loại DFG được sử dụng tùy theo vị trí của nó
DFG gắn liền với các transition thường là các DFG mô tả các phép so sánh Loại DFG này sẽ được mô tả cùng lúc với các biến luận lý biểu diễn điều kiện thực thi của transition đã được trình bày ở trên
Loại biểu đồ luồng dữ liệu thứ hai là biểu đồ lưu dữ liệu trong hệ thống liên quan đến địa điểm hay còn gọi là DFG nơi diễn tả hành động của dữ liệu Loại DFG này sẽ được thể hiện tương ứng với việc thực hiện chuyển tiếp Theo đó, mọi giá trị thay đổi của dữ liệu sẽ được thể hiện sử dụng từ khóa “next”.
5.4.1.4 Biểu diễn hoạt động của mô hình PN-DFG
Các phần trên đã trình bày những sự chuyển đổi riêng lẽ các thành phần của mô hình PN- DFG sang NuSMV Phần này sẽ trình bày các thức mô phỏng hoạt động mô hình PN-DFG sử dụng ngôn ngữ đặc tả SMV Ý tưởng chuyển đổi bao gồm những vấn đề sau:
Mô hình PN-DFG được xem xét như một máy FSM Trong đó, trạng thái của FSM này tương ứng với một trạng thái của mô hình PN-DFG Mặt khác, trạng thái của mô hình PN- DFG được xác định bởi trạng thái của tất cả các place của nó
Trạng thái ban đầu của máy FSM sẽ là trạng thái ban đầu các place Trong NuSMV, các biến place được khởi tạo giá trị ban đầu dưới từ khóa “INIT” Ngoài ra, các biến sử dụng trong DFG nếu cần khởi tạo giá trị ban đầu, cũng sẽ được trình bày dưới từ khóa này
Sự thực thi của một transition sẽ đưa mô hình PN-DFG sang một trạng thái khác Do đó, sự thực thi của transition sẽ được mô tả tương đương với sự chuyển trạng thái của máy FSM
Một cách tương ứng, trong NuSMV, sự chuyển trạng thái này sẽ được trình bày dưới từ khóa
Xét mô hình trung gian PN-DFG 4 pha của một truyền dữ liệu (Sender) như mô tả ở Hình 33 Một số nhận xét sơ bộ về mô hình PN-DFG này như sau:
Bao gồm 4 place và 4 transition Ban đầu, chỉ có place P0 là có token
HIỆN THỰC KHỐI KIỂM ĐỊNH MỞ RỘNG CHO CÔNG CỤ PAiD
Giới thiệu module kiểm định
Module kiểm định này được xây dựng để kiểm định vi mạch bất đồng bộ ở mức cao
Module “Verification” nhận đầu vào là mô hình PN-DFG sinh ra từ tổng hợp đặc tả cấp cao Sau đó, nó sẽ thực hiện các công việc tương ứng với qui trình kiểm định đề xuất như đã trình bày ở Chương 5
Module “Verification” hoạt động ở chế độ dòng lệnh (User command line) Nó cung cấp cho người sử dụng những chức năng sau:
Duyệt mô hình PN-DFG: nhằm mục đích sắp xếp lại các chỉ số cho các place cũng như transition
Thu lược kênh truyền: thực hiện phương pháp giảm kênh như đã trình bày ở nội dung trên
Phân rã mô hình PN-DFG theo giao thức 4 pha: tạo ra mô hình PN-DFG chi tiết theo giao thức 4 pha, chuẩn bị cho quá trình tái biểu diễn bằng ngôn ngữ SMV
Tái biểu diễn mô hình PN-DFG trong NuSMV: thực hiện tạo ra đặc tả SMV cho mô hình PN-DFG tương ứng
Hình 38 mô tả kiến trúc mở rộng của môi trường thiết kế PAiD với module mới là
“Verification” Dễ dàng nhận thấy, module kiểm định này sẽ nằm ở tầng thứ 2 – tầng thiết kế bao gồm các chức năng được thực hiện trên mô hình biểu diễn trung gian PN-DFG, ví dụ như : tối ưu hành vi (Behavioral Optimization), giả lập hành vi (Behavioral Simulation)
Hình 38 Kiến trúc mở rộng môi trường thiết kế PAiD
Hoạt động của module kiểm định
6.2.1 Duyệt mô hình PN-DFG
Tính năng này cho phép người dùng duyệt through mô hình PN-DFG để thu được danh sách tất cả place cũng như transition của nó Sau đó, các chỉ số của chúng sẽ được sắp xếp gọn lại Điều này sẽ giúp cho việc phân tích trực tiếp dựa vào file lưu trữ chúng sẽ dễ dàng hơn.
Lệnh thực hiện : ShrinkChan –c chan_name Chức năng này được thực hiện qua các công đoạn như sau :
Tìm kiếm hai tiến trình sử dụng kênh truyền có tên là chan_name
Tìm kiếm tất cả các kênh truyền giữa hai tiến trình này (ngoài kênh chan_name, có thể còn có thêm kênh truyền khác)
Kết hợp 2 tiến trình đó thành một tiến trình chung
Duyệt qua mô hình PN-DFG của tiến trình chung và tiến hành phân rã các tác vụ trên kênh truyền chung (như mô tả ở Hình 39)
Tạo 2 place P_write và P_read
Duyệt toàn bộ PN-DFG chung
Tác vụ trên kênh truyền chung?
Tất cả place đã được duyệt?
Tiến hành phân rã Đúng
Hình 39 Lưu đồ thực hiện phân rã tác vụ trên kênh truyền chung
6.2.3 Phân rã mô hình PN-DFG theo giao thức 4 pha
Quá trình này sẽ thực hiện phân rã mô hình PN-DFG 4 pha theo giao thức 4 pha Quá trình thực hiện như sau :
Duyệt toàn bộ place trên mô hình PN-DFG
Nếu tác vụ tương ứng với place là tác vụ trên kênh truyền thì tiến hành phân tích tác vụ này theo giao thức 4 pha
Qui trình thực hiện được mô tả theo lưu đồ ở Hình 40
6.2.4 Tái biểu diễn mô hình PN-DFG trong NuSMV
Lệnh thực hiện: PN2SMV –of smv_filename
Lệnh này sẽ tiến hành chuyển đổi mô hình PN-DFG sang mô hình trong ngôn ngữ SMV
Kết quả sẽ được lưu vào file có tên là smv_filename Quá trình thực hiện bao gồm các bước chính như sau:
Tạo module trong SMV có tên tương ứng với tên tiến trình
Khởi tạo các tham số đầu vào cho module SMV dựa trên các kênh vào ra của tiến trình
Khởi tạo các biến cho module SMV dựa trên danh sách các biến của tiến trình
Duyệt qua tất cả các transition trong mô hình PN-DFG của tiến trình, định nghĩa các tín hiệu tích cực transition tương ứng trong SMV
Khởi tạo các giá trị cho các biến trong module SMV
Chuyển đổi hoạt động của mô hình PN-DFG dưới từ khóa “TRANS” theo qui trình như mô tả ở Chương 5
Lưu đồ tổng quát được mô tả ở Hình 41
Duyệt toàn bộ PN-DFG chung
Tác vụ trên kênh truyền?
Tất cả place đã được duyệt?
Tiến hành phân rã theo giao thức 4 pha Đúng
Hình 40 Lưu đồ thực hiện phân rã theo giao thức 4 pha
Tạo module SMV Tên tiến trình
Tạo tham số đầu vào cho module SMV
Danh sách kênh vào ra
Khai báo biến cho module SMV
Danh sách biến Định nghĩa tín hiệu tích cực cho các transition Danh sách
Biểu diễn hoạt động của PN-DFG dưới từ khóa TRANS
Hình 41 Lưu đồ tổng quát tái biểu diễn mô hình PN-DFG trong NuSMV
THỰC NGHIỆM
Bộ vi mạch mẫu
Để kiểm chứng cũng như đánh giá kết quả nghiên cứu về phương pháp kiểm định vi mạch bất đồng bộ, luận văn đã thực hiện xây dựng một bộ vi mạch mẫu Ngoài ra, chúng còn có thể được đưa vào giảng dạy và nghiên cứu mở rộng hướng nghiên cứu
Bộ vi mạch mẫu bao gồm:
Mạch trọng tài bất đồng bộ (asynchronous arbiter)
Mạch chọn bất đồng bộ (asynchronous selector)
Bộ phân hợp kênh bất đồng bộ (asynchronous multiplexer)
Bộ tranh chấp tương hỗ phân tán (DME - Distributed Mutual Exclusion)
Bộ lọc đáp ứng xung hữu hạn bất đồng bộ (asynchronous pipelined finite impulse response filter)
Các bộ vi mạch mẫu này sẽ được mô tả chi tiếp ở phần tiếp theo sau
7.1.1 Mạch trọng tài bất đồng bộ
Bộ trọng tài (arbiter) [18] là một thiết bị điện tử được sử dụng nhiều trong hệ thống số
Chúng có nhiệm vụ điều khiển các truy cập vào vùng tài nguyên dùng chung giữa các tiến trình song song (client)
Mạch trong tài bất đồng bộ được xây dựng chỉ bao gồm hai client cùng chia sẻ một tài nguyên Hình 42 mô tả kiến trúc mạch trọng tài này Trong đó, có hai client được kí hiệu là Client 1 và Client 2 và một bộ trọng tài được ký hiệu là Asynchronous Arbiter
Hình 42 Kiến trúc mạch trọng tài bất đồng bộ
Một số đặc điểm của mạch được mô tả như sau :
Client 1 và Client 2 giao tiếp với Asynchronous Arbiter thông qua hai kênh truyền bất đồng bộ c1 và c2 tương ứng
Một client nếu muốn truy cập vào vào vùng chia sẻ chung sẽ gửi một giá trị (0 hoặc 1) lên kênh truyền tương ứng
Bộ trọng tài sẽ lắng nghe hai kênh truyền và quyết định kênh truyền nào được phép truy cập tài nguyên chung Nếu cho phép Client 1, nó sẽ ghi 0 lên kênh c; ngược lại nếu cho phép Client 2, nó sẽ ghi 1
Tớnh chất được chọn để kiểm định được phỏt biểu như sau : ô Nếu Client 1 yờu cầu được truy cập vào tài nguyên chung thì phải tồn tại một luồng thực thi để cuối cùng yêu cầu đó được thỏa mãn Hay nói cách khác, tồn tại một trạng thái ở tương lai mà tại đó giá trị kênh truyền c là
Tính chất này được ký hiệu là Arbiter_P
7.1.2 Mạch chọn bất đồng bộ
Bộ chọn được thiết kế có những tính chất như sau (như mô tả ở Hình 43):
Bao gồm hai đầu vào và hai đầu ra Đầu vào là kênh C và kênh E Đầu ra là kênh S1 và kênh
Thành phần chính là bộ chọn được kí hiệu Asynchronous Selector như trong hình
Bộ chọn sẽ đọc dữ liệu từ kênh E Sau đó, dựa theo giá trị đọc trên kênh C để xác định sẽ truyền dữ liệu đó đến kênh S1 hoặc S2 Cụ thể sẽ có 3 trường hợp như sau:
Nếu giá trị kênh C là 0 : chọn kênh S1
Nếu giá trị kênh C là 1 : chọn kênh S2
Nếu giá trị kênh C là 2 : chọn cả hai kênh S1 và S2
Hình 43 Kiến trúc mạch chọn bất đồng bộ
Tớnh chất được chọn để kiểm định được phỏt biểu như sau : ô Nếu kờnh C chọn kờnh đầu ra là S1 để truyền dữ liệu bằng cách gửi giá trị 0 thì giá trị kênh truyền E cuối cùng phải được truyền ra kờnh S1 ằ
Tính chất này được ký hiệu là Selector_P
7.1.3 Bộ phân hợp kênh bất đồng bộ
Bộ phân hợp kênh bất đồng bộ hoạt động tương tự như bộ chọn bất đồng bộ mô tả ở trên
Dựa trên giá trị điều khiển, bộ phân hợp kênh sẽ lựa chọn đầu vào tương ứng để truyền đến đầu
Hình 44 Kiến trúc bộ phân hợp kênh bất đồng bộ
Một số tính chất của bộ phân hợp kênh này như sau:
Bao gồm 3 đầu vào và 1 đầu ra Đầu vào là các kênh Input 1, Input 2 và Select Đầu ra là kênh Output
Thành phần chính là bộ phân hợp kênh và được kí hiệu là Asynchronous Multiplexer Ngoài ra còn có các bộ 1_bit_Buffer 1 và 1_bit_Buffer 2 Chúng là các bộ đệm dùng để đệm dữ liệu vào từ các kênh Input 1 và Input 2 tương ứng
Bộ phân hợp kênh sẽ lấy dữ liệu từ đầu vào từ hai bộ đệm Sau đó, dựa vào giá trị kênh
Select để quyết định xem giá trị từ bộ đệm nào được gửi ra kênh Output
Nếu Select là 0 : chọn kênh Input 1
Nếu Select là 1 : chọn kênh Input 2
Bản chất lựa chọn để kiểm định được phát biểu như sau: nếu giá trị đọc từ kênh Select là 0 thì dữ liệu từ bộ đệm "1_bit_Buffer 1" phải được truyền ra kênh Output.
Tính chất này được ký hiệu là Multiplexer_P
7.1.4 Bộ tranh chấp tương hỗ phân tán
Tranh chất tương hỗ phân tán - DME – là một vấn đề tranh chấp tương hỗ rất nổi tiếng giữa các tiến trình có tài nguyên chia sẻ chung Một vài tính chất của bộ DME này như sau:
Tiến trình được gọi là Master
Tài nguyên chung được quản lý bởi thực thể gọi là Server
Tiến trình muốn truy cập tài nguyên chung phải thông qua Server
Mỗi tiến trình có một Server riêng
Các tiến trình không giao tiếp trực tiếp với nhau Chỉ có Server là có thể giao tiếp với nhau theo cơ chế vòng tròn
Bộ mẫu thử nghiệm này kiểm tra các DME với nhiều tiến trình khác nhau Hình 45 mô tả kiến trúc bộ DME gồm có 3 tiến trình
Hình 45 Kiến trúc bộ DME 3 tiến trình
Với bài toán tranh chấp DME, có nhiều hướng giải quyết đã được đề xuất nghiên cứu Bộ vi mẫu này sử dụng giải thuật được tạm dịch là phản hồi đặc quyền (The Refelecting Privilege) [4] Mô tả hướng tiếp cận của giải thuật này như sau:
Mỗi Server sẽ có một cờ để xác định xem nó có quyền truy cập tài nguyên chung hay không
Biến cờ sẽ có hai giá trị, trong đó giá trị 1 tương ứng với có quyền truy cập Như vậy, Master có Server giữ đặc quyền sẽ được quyền vào vùng tài nguyên chung
Có tối đa một đặc quyền trong toàn hệ thống Điều này đảm bảo chỉ có một tiến trình có thể truy cập tài nguyên chung
Khi một Master muốn gửi yêu cầu vào vung tài nguyên chung tới Server của nó, sẽ có thể có 2 trường hợp xảy ra:
Server giữ đặc quyền : Master được truy cập tài nguyên chung
Server không giữ đặc quyền : Server sẽ gửi yêu cầu qua Server kế bên cạnh Yêu cầu của Server sẽ đi theo chiều kim đồng hồ Một Server nào đó giữ đặc quyền, nếu Master của nó không sử dụng tài nguyên chung thì nó sẽ gửi đặc quyền đó ngược lại theo chiều ngược kim đồng hồ tới Server yêu cầu Do đó, phương pháp này được gọi là phản hồi đặc quyền
Tớnh chất lựa chọn kiểm định được phỏt biểu như sau : ô Chỉ cú tối đa một Master được quyền truy cập vào vựng tài nguyờn chung ằ
Tính chất này được ký hiệu là DME_P
7.1.5 Bộ lọc đáp ứng xung hữu hạn bất đồng bộ
Bộ lọc đáp ứng xung hữu hạn bất đồng bộ (gọi tắt là bộ lọc FIR) được thiết kế thỏa mãn phương trình sai phân sau:
Nó cũng được gọi là bộ lọc FIR N tầng (N-tap FIR) Hình 46 mô tả kiến trúc bộ lọc FIR
Bộ đệm dữ liệu được biểu thị bằng bộ L, với mỗi bộ đệm nhận dữ liệu từ đầu vào x(n) hoặc từ bộ đệm trước đó Sau khi nhận dữ liệu, các bộ đệm truyền dữ liệu đến bộ đệm tiếp theo và bộ nhân tương ứng.
Bộ AMP biểu diễn bộ nhân bất đồng bộ Nó nhận hai thừa số: thứ nhất là hệ số h của bộ đệm và thứ hai là từ các bộ đệm
Bộ Adder có nhiệm vụ tính tổng từ bộ cộng phía trước với kết quả từ bộ nhân tương ứng
Hình 46 Kiến trúc bộ lọc FIR 3 tầng
Tớnh chất lựa chọn để kiểm định được phỏt biểu như sau : ô Giỏ trị của bộ đệm phải được giữ nguyờn chừng nào nú vẫn chưa được đọc bởi bộ đệm tiếp theo ằ
Tính chất này được ký hiệu là FIR_P.
Thiết lập môi trường thực nghiệm
Các bộ mẫu thử nghiệm được kiểm định với những thông tin về môi trường như sau:
Công cụ kiểm tra mô hình NuSMV:
Tùy chọn mặc định (default option)
Chip vi xử lý Intel Core i7 – 4770 CPU @ 3.40Gh x 8
Bộ nhớ RAM dung lượng 15.4 G
Thời gian tối đa thực thi công cụ NuSMV cho kiểm định một tính chất bất kỳ: 8 giờ.
Kết quả
Các bộ mẫu thử nghiệm được đưa vào chạy thực nghiệm Kết quả thu được bao gồm:
Kết quả quá trình tái biểu diễn PN-DFG bằng SMV
Kết quả quá trình kiểm định các bộ mẫu thử thử nghiệm bằng 2 chiến lược:
Chiến lược truyền thống : Chiến lược này không thu giảm kênh truyền, sử dụng duy nhất phương pháp truyền thống theo giao thức 4 để tạo ra mô hình PN-DFG chi tiết
Chiến lược kết hợp : Chiến lược này sẽ sử dụng phương pháp giảm kênh để lược bỏ một số kênh truyền Sau đó áp dụng phương pháp truyền thống theo giao thức 4 pha để tạo ra mô hình PN-DFG chi tiết
Lưu ý: Trong quá trình tiến hành thực nghiệm, chiến lược kết hợp chỉ áp dụng với các vi mạch phức tạp mà ở đó chiến lược truyền thống cần nhiều thời gian để thực hiện kiểm định
7.3.1 Kết quả tái biểu diễn PN-DFG trong NuSMV
Bảng 4 tóm tắt kết quả thu được từ các mô hình PN-DFG được tạo ra bằng chiến lược truyền thống, bao gồm số lượng địa điểm (place) và chuyển đổi (transition) trong các mô hình cụ thể, được trình bày trong hai cột cuối của bảng.
Bảng 4 Kết quả thực nghiệm quá trình phân rã PN-DFG và tái biểu diễn trong NuSMV theo chiến lược truyền thống Đặc điểm Thông tin thống kê
Số lượng place Số lượng transition
Mạch trọng tài bất đồng bộ
Mạch chọn bất đồng bộ
Bộ phân hợp kênh bất đồng bộ
Bộ tranh chấp tương hỗ phân tán
Bộ lọc FIR bất đồng bộ
Tất cả các bộ mẫu thử nghiệm đều thành công trong việc sinh đặc tả SMV một cách tự động Điều này cho đã chứng minh cho tính khả thi của những quy luật chuyển đổi đã mô tả ở Chương 5 Ngoài ra, có thể dễ dàng nhận thấy số các place và transition tăng tỉ lệ thuận với độ phức tạp của vi mạch kiểm định
Chiến lược kết hợp được áp dụng vào 2 bộ vi mạch thử nghiệm là DME là bộ lọc FIR
Bảng 5 trình bày thông tin về kênh truyền được thu giảm và về mô hình PN-DFG chi tiết tạo ra
Theo đó, vi mạch DME được thu giảm các kênh truyền giữa các cặp Master và Server tương ứng Vi mạch FIR được thu giảm các kênh truyền giữa các cặp APM và ADD tương ứng trong từng tầng
Bảng 5 trình bày kết quả thực nghiệm quá trình phân rã PN-DFG và tái biểu diễn trong NuSMV theo chiến lược kết hợp Đặc điểm Kênh truyền thu giảm Thông tin thống kê.
Số lượng place Số lượng transition
Bộ tranh chấp tương hỗ phân tán
Bộ lọc FIR bất đồng bộ
Kết quả cũng cho thấy với chiến lược kết hợp, số lượng place và transition tạo ra ít hơn so với chiến lược truyền thống Điều này hứa hẹn nó có thể được kiểm định trong thời gian ngắn hơn
7.3.2 Kết quả quá trình kiểm định bằng NuSMV
Công cụ NuSMV được chạy nhiều lần để kiểm định các vi mạch mẫu Các thông tin thu thập được bao gồm:
Thời gian thực thi của NuSMV
Số lượng node BDD do NuSMV tạo ra trong quá trình tính toán
Bảng 6 thống kê những thông tin về quá trình kiểm định những tính chất của các bộ mẫu thử nghiệm bằng chiến lược truyền thống
Qui ước: Quá trình kiểm định thành công sẽ cho các thông số cụ thể Trường hợp sau thời gian sẵn, nếu quá trình kiểm định vẫn chưa kết thúc thì nó sẽ bị dừng và mặc định là kiểm định không thành công Trường hợp này, thời gian của NuSMV sẽ được gán là “Quá thời gian” và số node BDD sẽ ko được xác định
Một số nhận xét có thể rút ra như sau:
Công cụ kiểm tra mô hình NuSMV có thể dễ dàng kiểm định những mô hình nhỏ như mạch trọng tài, mạch chọn, bộ phân hợp kênh và một vài bộ DME ít tiến trình Ví dụ với bộ DME có 6 Master, công cụ NuSMV có thể kiểm định trong khoảng thời gian dưới một phút Điều này cho thấy tính khả thi của hướng tiếp cận sử dụng phương pháp kiểm tra mô hình
Khi mô hình trở nên phức tạp như bộ DME 8 Master hay bộ lọc FIR 3 tầng, NuSMV không thể hoàn thành kiểm định trong khoảng thời gian đặt trước (8 giờ) Hệ quả là tính chất vẫn chưa có thể kiểm định được đối với những trường hợp này
Có thể thấy rằng thời gian thực thi sẽ tăng tương ứng với số lượng node BDD tăng lên
Tốc độ tăng của của thời gian thực thi, cũng như số node BDD là không phải hàm tuyến tính
Nó tăng với tốc độ cao, gần như là hàm lũy thừa Có thể nhận thấy điều này ở DME hoặc FIR Do đó, nó có thể dẫn đến một số trường hợp Quá thời gian như ở trên
Bảng 6 Kết quả thực nghiệm của quá trình kiểm định bằng NuSMV bằng chiến lược truyền thống Đặc điểm Tính chất Thời gian thực thi
Mạch trọng tài bất đồng bộ
Mạch chọn bất đồng bộ
Bộ phân hợp kênh bất đồng bộ
Bộ tranh chấp tương hỗ phân tán
8 Master DME_P Quá thời gian -
Bộ lọc FIR bất đồng bộ
3 tầng FIR_P Quá thời gian -
Bảng 7 trình bày kết quả thực nghiệm thu được khi áp dụng chiến lược kết hợp Có thể nhận thấy những kết quả tích cực như sau:
Tất cả các vi mạch mẫu đều được kiểm định thành công
Thời gian thực thi của NuSMV rất nhỏ Tất cả các vi mạch DME được kiểm tra thành công trong vòng một giây
Số lượng node BDD tạo ra cũng ít lại
Sự gia tăng thời gian thực thi ở DME không phải là một hàm lũy thừa Trong khi đó, số node BDD tạo ra dường như đạt tới ngưỡng bão hòa Điều này thực sự có ý nghĩa rất lớn khi kiểm định DME có nhiều Master hơn
Bảng 7 Kết quả thực nghiệm của quá trình kiểm định bằng NuSMV bằng chiến lược kết hợp Đặc điểm Tính chất Thời gian thực thi
Bộ tranh chấp tương hỗ phân tán
Bộ lọc FIR bất đồng bộ
7.3.3 So sánh hai chiến lược kiểm định
Từ các số liệu thu thập được, có thể xây dựng hai biểu đồ so sánh hai chiến lược như Hình 47 và Hình 48 Trong đó, Hình 47 so sánh về thời gian thực thi và Hình 48 so sánh về số lượng node BDD tạo ra Cỏc trường hợp ô Quỏ thời gian ằ khụng được biểu diễn trờn biểu đồ
Dựa vào hai biểu đồ này, có thể kết luận chiến lược kết hợp hiệu quả hơn rất nhiều so với chiến lược truyền thống
Hình 47 So sánh thời gian thực thi NuSMV của 2 chiến lược kiểm định
Chiến lược truyền thống Chiến lược kết hợp
Hình 48 So sánh số lượng node BDD tạo ra của 2 chiến lược kiểm định
Đánh giá
Năm bộ mẫu thử nghiệm đã được tạo ra một cách hoàn chỉnh Các công đoạn chuyển đổi cũng như kiểm định với công cụ kiểm tra mô hình NuSMV cũng đã thành công và cung cấp nhiều đánh giá cho hướng tiếp cận với kiểm tra mô hình vi mạch bất đồng bộ Một số điểm tích cực có thể kể đến như sau:
Khối kiểm định mở rộng của công cụ PAiD đã được kiểm chứng hoạt động chính xác
NuSMV đã cho thấy ưu điểm của nó trong việc kiểm định thành công một số mô hình vừa và nhỏ
Chiến lược kết hợp là một hướng tiếp cận hiệu quả trong kiểm định thiết kế vi mạch bằng NuSMV
Chiến lược truyền thống Chiến lược kết hợp
TỔNG KẾT
Kết quả luận văn
Luận văn đã thực hiện các công việc đề ra và thu được các kết quả khả quan Những kết quả quan trọng đã tiến hành như sau:
Đề xuất một cách rõ ràng, đầy đủ phương pháp kiểm định vi mạch bất đồng bộ sử dụng kiểm tra mô hình trong kiểm định hình thức
Phân tích các phương pháp biểu diễn trung gian có thể có với mô hình PN-DFG Dựa vào đó, xây dựng hai chiến lược để tiến hành phân rã mô hình PN-DFG nhằm thu được mô hình PN- DFG chi tiết – tiền đề cho giai đoạn tái biểu diễn trong NuSMV
Luận văn đã xây dựng một cách đầy đủ qui trình chuyển đổi mô hình PN-DFG sang NuSMV sử dụng ngôn ngữ SMV
Phát triển mở rộng môi trường thiết kế PAiD với một module kiểm định Nó tạo nên sự linh động cũng như góp phần hoàn thiện môi trường hỗ trợ thiết kế này
Xây dựng các bộ mẫu thử nghiệm một cách hoàn chỉnh bao gồm đặc tả hành vi chi tiết cũng như mã nguồn Chúng có thể được sử dụng cho việc nghiên cứu hoặc trong học thuật trong tương lai.
Hướng mở rộng
Luận văn mở ra một hướng tiếp cận kiểm định thiết kế vi mạch bất đồng bộ bằng kiểm tra mô hình Tuy nhiên, các vi mạch mẫu được xây dựng ở mức vừa và nhỏ Do đó, các nghiên cứu sau này cần mở rộng với các thiết kế vi mạch lớn hơn Sự thành công với các vi mạch lớn sẽ là bước tiến dài cho lĩnh vực nghiên cứu này
Ngoài ra, các nghiên cứu chuyên sâu về kiểm tra mô hình để phát triển NuSMV theo định hướng kiểm định mô hình PN-DFG cũng là một hướng nghiên cứu đầy thách thức cho các nhà nghiên cứu.