Giáo trình Thiết kế mạch logic số - Chương V: Thiết kế vi mạch số trên thư viện cổng chuẩn
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Thiết kế mạch logic số - Chương V: Thiết kế vi mạch số trên thư viện cổng chuẩn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_thiet_ke_mach_logic_so_chuong_v_thiet_ke_vi_mach.pdf
Nội dung text: Giáo trình Thiết kế mạch logic số - Chương V: Thiết kế vi mạch số trên thư viện cổng chuẩn
- Chương V: Thiết kế vi mạch số trên thư viện cổng chuẩn 1. Công nghệ chế tạo IC Công nghệ chế tạo vi mạch bán dẫn được phát triển từ những năm giữa của thế kỷ 20 và không ngừng phát triển biến đổi. Hình 4.1: Mô hình tấm silicon trong sản xuất IC Nguyên liệu để sản xuất IC vật liệu bán dẫn thường là silicon. Silicon đầu tiên được chuẩn bị dưới dạng thanh trụ dài (Silicon Ingot), hình dạng cho phép thu được tinh thế có độ đồng nhất cao. Khối trụ có đường kính thay đổi từ 50mm đến 300mm, sau đó được cắt thành các tấm hình tròn dầy bằng nhau (Silicon wafer), chiều dày của các tấm silicon thay đổi tùy từ 200 – 1000 µm tùy thuộc đường kính của tấm. Những tấm silicon này sẽ trải qua một quy trình quang khắc (photolithography) để cho ra sản phẩm cuối cùng là các khối IC vuông kích thước 2-15mm, mà thuật ngữ gọi là các dice, thông thường để tiết kiệm chi phí sản xuất thì các dice này được sản xuất hàng loạt giống nhau trên cùng một tấm silicon. Hình vẽ dưới đây minh họa cho nguyên l{ hoạt động của quá trình quang khắc. Nguyên l{ của quá trình quang khắc rất giống với nguyên l{ của quy trình rửa ảnh chụp bằng phim. Khi chụp ảnh thì cửa chụp của máy ảnh chỉ được mở ra trong một thời gian cực ngắn đủ cho ánh sáng tác động lên lớp vật liệu cảm quang trên bề mặt phim. Phim sau đó được rửa để tạo thành phim âm bản, qua phim này vùng nào bị ánh sáng chiếu vào thì trong suốt để ánh sáng đi qua, và ngược lại. Tới giai đoạn tái tạo hình ảnh, ánh sáng chiếu qua phim âm bản lên giấy ảnh,dưới kích thích của cường độ ánh sáng khác nhau lớp hóa Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 1
- chất trên giây ảnh sẽ tạo nên màu sắc khác nhau nhờ đó hình ảnh gốc khi chụp được khôi phục. Hình 4.2. Quy trình quang khắc (photolithography) trong sản xuât IC. Đối với quá trình quang khắc nguyên l{ làm việc cũng tương tự như vậy. Để sản xuất một IC, người ta dùng một bộ mặt nạ (masks) có tác dụng như phim âm bản, ánh sáng sử dụng trong kỹ thuật quang khắc là tia cực tím với bước sóng vào khoảng 200nm. Tấm silicon trước khi được chiếu tia cực tím thì được phủ lớp vật liệu cản quang (photoresit), lớp vật liệu này có độ dày từ 0,5- 1,0 µm. Tia cực tím được chiếu qua mặt nạ lên lớp cản quang, sau đó tấm silicon được rửa bằng dung dịch hóa chất đặc biệt, nếu vật liệu phủ là cản quang dương thì phần chịu tác động của tia cực tím sẽ bị biến đổi và bị rửa trôi, còn nếu là cản quang âm thì ngược lại, lớp vật liệu này sẽ bền trong dung dịch rửa trong khi phần còn lại sẽ bị hòa tan. Bên cạnh công nghệ “rửa ướt” bằng dung dịch hóa chất còn sử dụng công nghệ “rửa khô” bằng plasma. Sau khi những vị trí cần thiết bị tẩy đi thì tùy yêu từng giai đoạn sẽ phủ kim loại (thường là Cu) hoặc sử dụng những hóa chất tương ứng khuếch tán vào lớp bán dẫn để tạo cấu trúc tinh thể theo yêu cầu(tạo ra các khối bán dẫn kiểu P hay N). Tiếp đó phần vật liệu cản quang trên còn lại trên bề mặt được rửa đi Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 2
- hoàn toàn. Quá trình trên có thể được lặp đi lặp lại nhiều lần với nhiều mặt nạ khác nhau cho đến khi tạo xong hết các lớp cần thiết theo thiết kế. 2. Tổng quan về công nghệ ASIC trên thư viện cell chuẩn 2.1 Khái niệm thư viện phần tử logic chuẩn Standart Cell Library (SCL) hay thư viện phần tử logic chuẩn là tập hợp các phần tử logic cơ bản (cell) như AND, OR, NOT, Flip-flop, Latch, buffer có cùng kích thước chiều cao nên gọi là chuẩn. Thư viện chuẩn tồn tại ở hai dạng cơ bản - Timing Abstract – Thư viện này thường có định dạng Synopsys Liberty, cung cấp thông tin về chức năng, tham số thời gian, về công xuất, nhiễu cho từng cell một. - Layout Abstract – thường dùng định dạng LEF, hoặc Synopsys Milkyway, chỉ chứa thông tin về layout của các cells tức là thông tin về hình dáng kích thước nhằm phục vụ cho quá trình bố trí cells và thiết lập kết nối giữa các cells (Place and Route). Phân biệt các công nghệ bán dẫn: Khi đề cập tới một công nghệ bán dẫn thì thường đề cập tới các tên gọi công nghệ 180nm, 90nm hay 65nm, đó là giá trị kích thước đặc trưng của thư viện bằng chiều dài kênh bán dẫn L (channel length) của các cổng logic có trong thư viện. Các công nghệ có kích thước đặc trưng càng nhỏ thì tương ứng có độ tích hợp càng cao và mức tiêu thụ năng lượng trên một đơn vị cổng càng thấp. Hình 4.3 Mô hình logic cell Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 3
- 2.2 Các đặc trưng của cell Max fan-out của một cell là số lượng kết nối tối đa có thể kết nối ở đầu ra của một cell đó , tương ứng cell có Drive Strengh càng lớn thì sẽ có khả năng kết nối nhiều đầu ra và có Max fan-out lớn. Drive strength: Một tham số khá quan trọng khác của các cổng logic là Drive strength hay Current flow là cường độ dòng chạy qua cổng, hay thường được coi như công suất của cổng, giá trị này tỷ lệ thuận với W/L. Trên thực tế để tăng công suất của cổng người ta thường ghép nối hai cổng nối tiếp hoặc song song như minh họa dưới đây. Hình 4.4 Tăng công suất cho cell Delay: Độ trễ cell là thời gian cần thiết để ổn định giá trị tín hiệu đầu ra của cell kể từ thời điểm ổn định của các tín hiệu đầu vào, đơn vị thời gian thường được quy định trong thư viện, ví dụ công nghệ 130nm quy định là ns (10-9s), trong khi thư viện 90nm trở xuống thường quy định là ps (10-12s). Độ trễ cell càng nhỏ nếu kích thước cell càng nhỏ, nghĩa là công nghệ càng tiên tiến thì vi mạch hoạt động càng nhanh. Độ trễ còn tỷ lệ nghịch với công xuất hay cường độ dòng của cell, nghĩa là cell có dòng ra càng lớn thì độ trễ càng nhỏ. Trên thực tế khi cố gắng giảm độ trễ của vi mạch thì một trong những giải pháp là sử dụng cell có công suất lớn hơn và dẫn đến tăng kích thước của vi mạch. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 4
- Physical layout: là mô tả hình học của cell hay các kết nối được thể hiện bằng các khối đa giác được cấu tạo từ các vật liệu khác nhau. Hình vẽ dưới đây mô tả physical layout của cổng INVERTER dùng công nghệ CMOS. Physical layout của các cell là cơ sở để kết xuất ra các mặt nạ (MASK) dùng cho công đoạn cuối cùng là chế tạo bán dẫn. Hình 4.5 View of a cell 2.3 Khái niệm thiết kế ASIC trên thư viện cell chuẩn ASIC (Application Specific Intergreted Circuits) là khái niệm chỉ những vi mạch IC được thiết kế cho những ứng dụng đặc thù cụ thể nhất định. Với định nghĩa như vậy thì những IC chức năng thiết kế trên FPGA cũng có thể xem là ASIC. Tuy vậy trong lĩnh vực thiết kế vi mạch VLSI thuật ngữ công nghệ ASIC chỉ tới quy trình thiết kế chế tạo IC trên các thư viện cổng, nội dung của chương này sẽ đi sâu nghiên cứu một phần về công nghệ thiết kế này. Công nghệ thiết kế này chia làm hai loại chính: Full-custom ASIC Design: là quy trình thiết kế IC có mức độ chi tiết cao nhất nhằm thu được sản phẩm tối có hiệu quả làm việc cao nhất và đạt tối ưu về mặt tài nguyên trên nền một công nghệ bán dẫn nhất định. Để đạt được mục đích đó thiết kế không những được tối ưu ở những mức cao mà còn được tối ưu ở mức độ bố trí transitor và kết nối giữa chúng, ví dụng hai khối logic Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 5
- cùng thực hiện hàm OR nhưng phân bố ở hai vị trí khác nhau thì được cấu trúc bằng các mạch transitor khác nhau, phụ thuộc vào các thông số khác như tải đầu vào, đầu ra, vị trí, các khối liền kề Chính vì thế Full-custom ASIC đôi khi còn được gọi là random-logic gate networks nghĩa là mạch tạo bởi những cổng không đồng nhất. Semi-custom ASIC Design: Phân biệt với Full-custom ASIC, khái niệm này chỉ quy trình thiết kế mà mức độ chi tiết không đạt đến tối đa, thông thường thiết kế đạt chi tiết đến mức cổng logic hoặc cao hơn. Do Full-custom ASIC có độ phức tạp cao nên không những chi phí cho quá trình thiết kế rất lớn mặt khác thời gian dành cho thiết kế có thể kéo dài hàng vài năm trở lên, trong thời gian đó có thể đã có những công nghệ mới ra đời, mỗi một thay đổi nhỏ kéo theo việc phải làm lại gần như toàn bộ thiết kế và phát sinh thêm chi phí rất nhiều do vậy lợi nhuận sản phẩm bán ra thấp hay thậm chí thua lỗ. Semi- custom ASIC cân bằng giữa chi phí thiết kế và chất lượng sản phẩm bằng cách đẩy nhanh và giảm thiểu chi phí cho quá trình thiết kế, bù lại sản phẩm làm ra không đạt được mức tối ưu l{ thuyết như Full-custom design. Có nhiều dạng semi-custom design nhưng một trong những kiểu cơ bản mà thường được sử dụng là thiết kế trên cơ sở thư viện cổng chuẩn (Standard Cell Library), thư viện này là tập hợp của các cổng logic như AND, OR, XOR, thanh ghi có cùng kích thước chiều cao băng kích thước đặc trưng của thư viện. Trong chương này ta sẽ nghiên cứu kỹ về công nghệ ASIC này. 2.4 So sánh giữa ASIC và FPGA Trước khi đi sâu vào nghiên cứu về ASIC, ta sẽ so sánh một cách tổng quan nhất ASIC và công nghệ FPGA mà ta đã tìm hiểu ở chương trước: Tiêu chí FPGA ASIC Ưu thế Mức độ phức Đơn giản, tập trung vào Phức tạp, từ thiết kế chức FPGA tạp thiết kế chức năng là chính, năng đến khi tạo ra các các bước khác thực hiện Layout gồm 11 bước, độ gần như tự động hoàn toàn phức tạp tăng từ trên xuống dưới Thời gian thiết Thời gian ngắn có thể trong FPGA kế vài tuần hoặc vài tháng Đội ngũ kỹ sư Có thể 1 người thực hiện Nhiều người và nhiều lĩnh FPGA hoặc một nhóm người hiểu vưc khác nhau, trình độ biết về FPGA cao. Khả năng tối ưu Ít, chủ yếu bằng thuật toán Nhiều, có nhiều bước để ASIC thiết kế tối ưu thiết kế. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 6
- Sản phẩm Có thể làm được trong điều Chỉ có sau khi sản xuất tại FPGA kiện bình thường nhà máy Khả năng làm Thấp(so với ASIC) do cấu Cao, do được tối ưu ở ASIC việc (cho cùng trúc khả trình chặt chẽ. nhiều mức. một IC chức năng) Diện tích (cho Gấp hàng chục lần ASIC do Nhỏ (so với FPGA) nhiều ASIC cùng một IC cấu trúc FPGA phức tạp và lần chức năng ) FPFA có hiệu xuất sử dụng tài nguyên không cao. Khả năng tái Có Không FPGA cấu trúc Chi phí Thấp nếu cho ít sản phẩm, Thấp nếu sản xuất hàng ASIC nhưng đối với số lượng lớn loạt nhiều sản phẩm thì đắt hơn ASIC Hình 4.6. FPGA vs ASIC Dựa vào bảng trên cho thấy ASIC phù hợp với những thiết kế đòi hỏi tính tối ưu cao, chẳng hạn các vi mạch dùng cho các quá trình tính toán mô phỏng phức tạp vượt quá khả năng của PC hay FPGA, những vi mạch dùng trong quân sự, y học đòi hỏi làm việc với thời gian thực điều kiện môi trường khắc nghiệt, Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 7
- những thiết bị dân dụng có thị trường lớn như Vi xử l{, vi điều khiển vì chi phí sản xuất khi đó sẽ thấp. FPGA sẽ thích hợp cho những thiết kế ứng dụng nhỏ, đặc biệc có khả năng tái cấu trúc, những thiết kế có chi phí thấp và thời gian hoàn thiện ngắn hạn, không đòi hỏi cao về khả năng làm việc hay điều kiện làm việc. 3. Quy trình thiết kế ASIC trên thư viện cổng chuẩn. Phần trên đã trình bày sơ lược về quy trình sản xuất vi mạch bán dẫn, trên thực tế quy trình này rất phức tạp, có sự tham gia của nhiều nghành khoa học khác nhau và đòi hỏi độ chính xác rất cao. Trong khuôn khổ chương trình tại các trường đại học các sinh viên chủ yếu được giới thiệu về công nghệ thiết kế vi mạch trên máy tính. Nhờ có sự tiêu chuẩn hóa và thống nhất cao trong định dạng trao đổi dữ liệu cũng như quy trình công nghệ mà quá trình thiết kế có thể tách riêng không phụ thuộc nhiều vào quá trình sản xuất tại nhà máy. Đầu vào của quá trình sản xuất chính là bộ Physical layouts hay các mặt nạ (masks). Do đó sản phẩm cuối cùng của quy trình thiết kế là tạo ra phiên bản các mặt nạ (masks) phục vụ trong quá trình sản xuất hàng loạt. Sơ đồ tổng quan của quy trình thiết kế được trình bày ở hình sau: Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 8
- FRONT-END DESIGN BACK-END DESIGN Mô tả thuật toán Floorplaning (Specifitation) (Specifitation) RTL - coding Placement RTL Simulation/ Clock Tree Verification Synthesis Tổng hợp Routing (Synthesis) Verification Logic Verification (Formal, Timing, Physical) Fabrication Mask Generation (GDSII), IC Manufacturing and Testing Hình 4.7: Quy trình thiết kế IC. Toàn bộ quy trình thiết kế IC được phân chia thành hai phần, phần thứ nhất Front-End Design - thiết kế logic và Back-End Design - Thiết kế vật lý. Chú ý rằng khái niệm Front-End và Back-end nếu dùng cho quá trình sản xuất IC thì lại được hiểu khác, khi đó Front-end là toàn bộ các bước từ thiết kế logic cho đến khi chế tạo xong IC, Back-end là quy trình kiểm tra và đóng gói IC. Mô tả thuật toán (Specification): Đối với những thiết kế phức tạp thì quá trình hoàn thiện các tài liệu mô tả thuật toán chiếm thời gian không nhỏ trong toàn bộ thiết kế. Mô tả chức năng bao gồm đặt vấn đề bài toán, trên cơ sở đó phân tích để tìm ra thuật toán giải quyết. Thuật toán thường được thể hiện bằng các sơ đồ khối trên đó mô tả chi tiết chức năng của từng khối và cách chúng liên kết với nhau. Một trong những điểm khó nhất trong việc mô tả Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 9
- thuật toán là phải lập được biểu đồ trạng thái làm việc của mạch theo thời gian. Nếu mô tả ở phần này càng chi tiết thì càng đơn giản cho quá trình viết mã HDL ở dưới và tránh được những lỗi thiết kế về mặt thuật toán. RTL coding là thuật ngữ chỉ mô tả thiết kế ở mức thanh ghi truyền tải. Đây là một trong những bước quan trọng nhất trong quy trình thiết kế logic, ở bước này các kỹ sư sẽ mô tả thiết kế bằng ngôn ngữ mô tả phần cứng HDL (Hardware Description Language) trên cơ sở tài liệu mô tả thuật toán ở bước trên, nếu so sánh với lập trình viên phần mềm thì bước này tương ứng với bước viết code chương trình. Mô tả VHDL thường được chia nhỏ thành các module độc lập, việc chia nhỏ này thực chất cũng đã được thực hiện ở bước một, các module khi này có thể được tiến hành mô tả độc lập và song song với nhau. RTL Simulation: kiểm tra thiêt kế ở mức cao đã được đề cập ở chương hai, tuy nhiên khi làm những thiết kế phức tạp không thể bỏ qua bước đầu tiên là lập phương án kiểm tra. Lập phương án kiểm tra bao gồm xác định phương pháp kiểm tra, dạng kiểm tra (đầy đủ hay không đầy đủ), và miền kiểm tra. Việc kiểm tra thiết kế được thực hiện từ theo lần lượt từ các module riêng lẻ cấp dưới đến các module lớn hơn và cuối cùng là module tổng (Top-level module). Kiểm tra theo quy trình đó là cách tốt nhất nhằm đơn giản hóa quá trình kiểm tra vì kiểm soát lỗi ở module nhỏ bao giờ cũng đơn giản hơn kiểm soát lỗi ở một module cỡ lớn. 4. Tổng hợp thiết kế bằng Synopsys Design Compiler Ở phần này sẽ tập trung vào giới thiệu quy trình tổng hợp thiết kế từ mã nguồn RTL trên thư viện cổng chuẩn, cụ thể là trên công cụ tổng hợp logic Design compiler của hãng Synopsys. Các lệnh minh họa và ví dụ được làm trên phiên bản Design compiler 2004, công cụ này chạy trên hệ điều hành Linux, ở chế độ dòng lệnh tương tự như khi dùng mô phỏng thiết kế trên Modelsim bằng Tcl Script. Ví dụ minh họa ở hình sau: Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 10
- Hình 4.8: Chương trình Design Compiler. Dữ liệu của đầu vào tổng hợp thiết kê bao gồm mô tả RTL, mô tả thư viện công nghệ (Technology Library) và mô tả các yêu cầu hay điều kiện ràng buộc đối với thiết kế. RTL model TECHNOLOGY CONSTRAINT LIBRARY LOGIC SYNTHESIS .DB file NETLIST Hình 4.9: Tổng hợp logic . Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 11
- 4.4. Thiết lập điều kiện làm việc, mục tiêu thiết kế (Constraint design) Chức năng của thiết kế được quy định ở mô tả RTL là không thể thay đổi nhưng có thể hiện thực hóa theo nhiều phương án khác nhau. Thiết lập ràng buộc (Constraint design) là bước thiết lập các điều kiện làm việc, mục tiêu cho đối tượng thiết kế, những thiết lập này là cơ sở cho quá trình tối ưu hóa thiết kế khi thực hiện tổng hợp. Các điều kiện ràng buộc thiết lập có thể liên quan tới các tham số về mặt thời gian, diện tích, các tham số về điều kiện làm việc hay đối tượng công nghệ sẽ áp dụng. Các điều kiện đó được chia thành 2 dạng như sau: ENVIROMENT DESIGN CONSTRAIT CONSTRAINT CONSTRAINT Hình 4.10: .Điều kiện ràng buộc cho tổng hợp logic - Enviroment constraint: Thiết lập các tham số vật lý về môi trường làm việc như nhiệt độ, điện áp - Design constraints: Là các điều kiện ràng buộc chi tiết, hay mục tiêu cho đối tượng thiết kế cụ thể. Các điều kiện ràng buộc thường được viết dưới dạng một file text, có đuôi mở rộng là .scr (không bắt buộc). Các lệnh này có thể được đưa vào tuần từ từ dòng lệnh hoặc đưa vào bằng cú pháp dc_shell> include Ví dụ nội dung một file script như sau: current_design pu_pu clk_name = clk clk_period = 2950 clk_s = "2950" if (find(port, clk) == {"clk"}) { clk_name = clk create_clock -period clk_period clk } set_clock_uncertainty 610 clk_name set_driving_cell -lib_cell SCWBUFXC1 all_inputs() Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 12
- set_max_fanout 4.0 all_inputs() set_input_delay 1500 -clock clk_name REG_CODE[*] set_load 0.01 all_outputs() set_max_transition 100 all_inputs() set_max_area 1150000 set_multicycle_path 2 -from ctreg/Num_pack_out_bits[*] set_max_delay 4000 -from ctreg/XS[*] -to fu/pu_pack/PACK_OUT[*] set_multicycle_path 2 -from ctreg/M[*] set_multicycle_path 2 -from ctreg/Y[*] current_design pu_pu compile -boundary_optimization -map_effort medium Dưới đây ta sẽ lần lượt đi tìm hiểu các điều kiện ràng buộc này với các ví dụ viết cho trình tổng hợp logic Design Compiler của Synopsys 4.4.1. Thiết lập các tham số về môi trường làm việc (Enviroment constraints) Set_operating_condition: Lệnh này thiết lập điều kiện làm việc của thiết kế, điều kiện đó được quy định bằng các tên gọi không độc lập với thư viện là xấu nhất (WORST), tiêu chuẩn (NOMINAL) và tốt nhất (BEST). Các tham số cụ thể gắn với từng tên gọi này được quy định trực tiếp trong mô tả thư viện. Set_operating_condition Ví dụ: dc_shell -t> set_operating_conditions WORST dc_shell -t> set_operating_conditions BEST Ví dụ mô tả operating condition có dạng như sau: operating_conditions (WORST) { process : 1.3 ; temperature: 100.0 ; voltage: 2.75 ; tree_type : worst_case_tree ; } operating_conditions (NOMINAL) { process : 1.0 ; temperature: 25.0 ; voltage : 3.00 ; tree_type : balanced_tree ; } operating_conditions (BEST) { process : 0.7 ; temperature: 0.0 ; voltage: 3.25 ; tree_type : best_case_tree ; } Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 13
- Điều kiện làm việc ảnh hưởng rất lớn tới kết quả tổng hợp, đặc biệt là về mặt thời gian. Ví dụ trong trường hợp WORST nhiệt độ môi trường làm việc là 100oC thì các phần tử logic làm việc với độ trễ cao hơn so với bình thường ở 25oC, và hiệu xuất làm việc của IC nói chung sẽ kém hơn. Một ví dụ khác là khi giá trị voltage là DC đầu vào càng lớn thì tốc độ làm việc càng cao và khả năng chống nhiễu càng tốt. Set_wire_load_model: thiết lập mô hình của đường kết nối, các dạng mô hình được định nghĩa sẵn ở trong thư viện công nghệ của Synopsys. Mô hình đường kết nối xác định các tham số vật l{ như điện trở (resistance) điện dung (capacitance) diện tích, fan-out length của kết nối trên một đơn vị chiều dài, các tham số này dùng cho mô hình tính trễ của đường truyền. Ví dụ như sau: set_wire_load_model -name dc_shell -t> set_wire_load_model-name MEDIUM Ví dụ về WIRE_LOAD_MODEL wire_load (SMALL) { resistance : 0.2 ; capacitance :1.0 ; area : 0 ; slope : 0.5 ; fanout_length( 1, 0.020) ; fanout_length( 2, 0.042) ; fanout_length( 3, 0.064) ; fanout_length( 4, 0.087) ; fanout_length(1000,20.0) ; } wire_load(MEDIUM) { resistance : 0.2 ; capacitance : 1.0 ; area : 0 ; slope : 1.0 ; fanout_length( 1, 0.022) ; fanout_length( 2, 0.046) ; fanout_length( 3, 0.070) ; fanout_length( 4, 0.095) ; fanout_length(1000,30.0) ; } set_wire_load_mode: định nghĩa lựa chọn một trong ba cách thức thực áp dụng mô hình dây dẫn là top, enclosed, và segmented trên thực tế chỉ một trong hai model đầu tiên thường được sử dụng. set_wire_load_mode dc_shell -t> set_wire_load_mode top Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 14
- top: quy định tất cả các module con đều được thừa hưởng mô hình kết nối giống như module ở cấp cao nhất (top-level module). enclosed: quy định rằng mô hình kết nối của module con sẽ giống mô hình kết nối của module trực tiếp chứa nó. segmented: quy định cho mô hình đường kết nối giưac các khối con ví dụ hai khối con B và C nằm trong khối A sẽ có kết nối theo mô hình của A, nhưng bản thân mô hình đường kết nối của các đường dữ liệu bên trong B và C thì được định nghĩa riêng. set_drive và set_driving_cell: sử dụng chỉ cho các đối tượng là inputs và outputs, set_drive dùng để thiết lập drive strength cho tín hiệu đầu vào, nếu dùng set_driving_cell thì giá trị drive strength đầu vào được lấy từ giá trị của cell được coi là đứng trước nó. Chú ý rằng trên thực tế không có cell nào được đặt thêm vào mạch. Cú pháp và ví dụ của các lệnh như ở dưới đây, chú { nếu drive strength được đặt là 0 thì có nghĩa là tín hiệu có độ mạnh nhất và thường dùng đặt cho tín hiệu clock. set_drive set_driving_cell –cell –pin dc_shell -t> set_drive 0 {CLK RST} dc_shell-t> set_driving_cell –cell BUFF1 –pin Z [all_inputs] set_load: quy định giá trị điện dung cho các tín hiệu thường là các tín hiệu đầu ra của các khối, đơn vị điện dung tính băng nf, pf tùy theo quy định về đơn vị trong thư viện. Cú pháp và ví dụ như sau: set_load dc_shell -t> set_load 1.5 [all_outputs] dc_shell -t> set_load 0.3 [get_nets blockA/n1234] Design Rule Constraints hay DRCs là tâp hợp các lệnh set_max_transition, set_max_fanout and set_max_capacitance thiết lập các quy tắc mà quá trình tổng hợp thiết kế phải tuân thủ, các quy định này được trích ra từ các tham số liên quan tới quy trình công nghệ sản xuất IC và nhất thiết không được vi phạm thì mới đảm bảo sản phẩm IC tạo ra làm việc đúng theo yêu cầu. DRC áp dụng cho tất cả input và output của thiết kế hiện hành. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 15
- set_max_transition: thường được dùng cho các input, quy định rằng tất cả các đầu vào có thời gian truyền transition time lớn hơn thời gian quy định của chân tải đầu max_transition vào sẽ không được nối. Ví dụ set_max_transition dc_shell-t> set_max_transition 0.3 current_design set_max_capacitance: thường được dùng cho các output, quy định rằng đầu ra tương ứng chỉ được phép nối với các đường dẫn có tổng giá trị điện dung nhỏ hơn giá trị max_capacitance. set_max_capacitance dc_shell-t> set_max_capacitance 1.5 [get_ports out1] set_max_fanout: quy định số lượng lớn nhất các kết nối mà đầu ra có thể phục vụ. set_max_fanout dc_shell-t> set_max_fanout 3.0 [all_outputs] 4.4.2. Thiết lập constraints cho thiết kế cụ thể. Đối với các thiết kế cụ thể, người thiết kế phải xác lập các mục tiêu và các điều kiện ràng buộc tương ứng về mặt thời gian và diện tích. Phụ thuộc vào các xác lập này, trình tổng hợp sẽ cố gắng đưa ra những phương án mạch nhằm đáp ứng những yêu cầu đó, quá trình đó chính là quá trình tối ưu hóa thiết kế. Một lưu { quan trọng là những xác lập phải dựa trên cơ sở thực tế, nếu người thiết kế cố tình đưa ra những yêu không có khả năng hiện thực hóa sẽ khiến quá trình tổng hợp kéo dài mà kết quả tổng hợp đưa không phải là tối ưu. create_clock: Lệnh quy định cho xung nhịp đồng bộ cho toàn bộ hoặc một phần của thiết kế, clock sẽ được xác lập với chu kz xác định và hình dạng tín hiệu. Ví dụ để xác nhận tín hiệu có tên CLK trong thiết kế là tín hiệu xung nhịp hệ thống với chu kz 40 ns và bán với 50% thời gian của chu kz đầu tích cực ở mức cao thì dùng câu lệnh như sau dc_shell-t> create_clock–period 40 –waveform [list 0 20] CLK Trong một số trường hợp khi làm việc với các khối tổ hợp thuần túy thì có thể tạo ra một xung nhịp ảo để giới hạn thời gian trễ đầu vào với đầu ra, tuy vậy cách làm đơn giản mà dễ sử dụng hơn là dùng lệnh set_max_delay, ví dụ set_max_delay -to all_outputs() 1.7 Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 16
- create_generated_clock: lệnh này sử dụng để định nghĩa xung nhịp đồng thứ cấp được tạo ra bên trong khối thiết kế, thông thường bởi các khối chia tần. create_generated_clock –name –source –divide_by | –multiply_by set_dont_touch_network: là một lệnh rất hữu dụng, thường được sử dụng với các tín hiệu như xung nhịp clock hay reset, khi gặp lệnh này Design compiler sẽ bỏ qua không thực hiện thay đổi thêm với các tín hiệu đó trong quá trình tối ưu thiết kế nữa. Ví dụ như sau: dc_shell> set_dont_touch_network {CLK, RST} set_dont_touch: Dùng để báo cho trình tổng hợp biết không được thay đổi cấu trúc của thiết kê, khối, cổng, chỉ ra trong dòng lệnh. Lệnh này rất hay được sử dụng khi tổng hợp module từ các module đơn lẻ, khi các module đơn lẻ đã đạt được cấu trúc hợp lý có thể dùng lệnh này để lưu giữ cấu trúc đó lại, quá trình tối ưu sẽ chỉ được thực hiện với các module khác bên ngoài nó. Ví dụ như sau: dc_shell-t> set_dont_touch current_design dc_shell -t> set_dont_touch [get_nets gated_rst] set_dont_use: Dùng để báo cho Design Compiler biết không được sử dụng cell, hoặc danh sách các cell chỉ định trong tham số dòng lệnh. Ví dụ lệnh sau ngăn không cho Design Compiler sử dụng các Flip-flop có tên SDFF* hoặc RSFF* dc_shell -t> set_dont_use [list mylib/SDFF* mylib/RSFF*] set_input_delay Là một lệnh khá quan trọng dùng để thiết lập giá trị độ trễ đầu vào cho thiết kế. Giá trị này được đặt chỉ khi mạch đang xét là mạch dãy, khi đó độ trễ thường được tính căn cứ vào thời điểm xung nhịp đồng bộ được kích hoạt. Xét như ở ví dụ dưới đây. dc_shell> set_input_delay –max 23.0 –clock CLK {datain} dc_shell> set_input_delay –min 0.0 –clock CLK {datain} Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 17
- Hình 4.11: Thiết lập input delay Khi ta đặt trễ đầu vào với tham số -max cho tín hiệu din nghĩa là khoảng thời gian kể từ điểm kích hoạt của xung nhịp đồng hồ cho tới khi tín hiệu đầu vào ổn định không được vượt giá trị thời gian quy định trong câu lệnh, hay nói một cách khác đó là thời gian trễ lớn nhất có thể của khối logic tổ hợp đầu vào của thiết kế giữa thanh ghi cuối cùng của module trước đó đến thanh ghi đầu tiên của module đang xét. Khi câu lệnh đi cùng tham số -min thì đó chính là giới hạn thời gian Thold của lớp thanh ghi tại vị trí đầu vào. Ở ví dụ trên: Như ở hình vẽ trên, tín hiệu xung nhịp đồng bộ có chu kz là 30ns, trong đó ½ chu kz là mức tích cực dương còn ½ là mức tích cực âm. Với hai câu lệnh trên thì thời gian trễ lớn nhất của khối logic đầu vào là 23ns, và thời gian Tsetup tương ứng là 7ns với Thold = 0ns set_output_delay: Dùng để thiết lập tham số thời gian trễ cho tín hiệu ra quy định khoảng thời gian kể từ khi giá trị tín hiệu đầu ra xác định đến thời điểm kích hoạt của xung nhịp đồng bộ tiếp theo. Ví dụ như sau: dc_shell> set_output_delay –max 19.0 –clock CLK {dataout} Hình 4.12: thiết lập input delay Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 18
- Với lệnh trên khối logic tổ hợp đầu ra có độ trễ tối đa không quá T – 19 ns = 11ns, nghĩa là đầu ra buộc phải ổn định sau 11ns sau sườn xung nhịp. set_clock_uncertainty: Thiết lập giá trị cho clock skew hoặc điều chỉnh các giá trị cho Tsetup và Thold ví dụ, câu lệnh thứ nhất xác lập các giá trị Tsetup và Thold, câu lệnh thứ hai xác lập giá trị clock_skew dc_shell> set_clock_uncertainty –setup 0.5 –hold 0.25 CLK dc_shell> set_clock_uncertainty .25 CLK set_false_path: được sử dụng để báo cho Design compiler biết đường dữ liệu (paths) cần phải bỏ qua khi thực hiện tối ưu hóa thiết kế, lệnh này thường gặp ví dụ khi thiết kế của chúng ta có nhứng nhóm đường gây trễ lớn mà không thể tối ưu hơn được trong khi trình biên dịch lại bỏ qua những đường khác, việc bỏ qua các đường đó giúp Design Compiler làm việc tốt hơn với nhóm còn lại và có thể có kết quả ảnh hưởng theo chiều hướng tốt với các nhóm bị bỏ qua. dc_shell> set_false_path –from in1 –through U1/Z –to out1 set_multicycle_path: Trong mô tả RTL có những tình huống mà thời gian trễ giữa hai lớp thanh ghi không phải lúc nào cũng là 1 xung nhịp đồng hổ mà có thể là vài xung nhịp. Lệnh set_multicycle_path cho phép quy định nhóm đường dữ liệu hoạt động với độ trễ là nhiều xung nhịp, việc đặt đúng tham số này sẽ giúp Design Compiler dễ dàng tối ưu hóa thiết kế tốt hơn do hiểu đúng cách thức làm việc của mạch thực tế. dc_shell> set_multicycle_path 2 –from U1/Z –through U2/A –to out1 set_max_delay Xác định thời gian trễ lớn nhất cho một hay một nhóm đường dữ liệu, lệnh này thường được sử dụng để giới hạn thời gian trễ cho các khối logic tổ hợp, ví dụ câu lệnh sau giới hạn thời gian trễ từ tất cả đầu vào cho đến đầu ra không được vượt quá 5 ns dc_shell -t> set_max_delay 5 –from [all_inputs] –to [all_outputs] set_min_delay Thiết lập điều kiện ngược với set_max_delay, trên thực tế rất ít sử dụng lệnh này. dc_shell> set_min_delay 3 –from [all_inputs] –to [all_outputs] Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 19
- set_max_area: xác định giới hạn diện tích sử dụng cho thiết kế, diện tích tỷ lệ thuận với số lượng cổng và thông thường tỷ lệ nghịch với thời gian trễ hay tốc độ của mạch. Theo ngầm định thì Design Compiler ưu tiên tối ưu hóa về mặt tài nguyên trước sau đó mới đến diện tích. Việc tối ưu về diện tích thường được làm sau khi tối ưu về mặt thời gian, trên thực tế đôi khi quá trình tối ưu hóa về mặt diện tích lại có tác động tích cực lên các tham số thời gian. dc_shell> set_max_area 10000 4.2 Tổng hợp logic Khái niệm tổng hợp logic (logic synthesis), trong thiết kế ASIC cũng giống như khái niệm tổng hợp thông thường, tức là chuyển mô tả RTL từ một mức độ trừu tượng cao xuống mức độ trừu tượng thấp hơn. Bên cạnh đó, thiết kế RTL là thiết kế độc lập với công nghệ còn kết quả của quá trình tổng hợp là đã gắn với một thư viện phần cứng xác định và do đó phụ thuộc vào công nghệ của thư viện đó. Có các phương pháp sau thường được sử dụng để tổng hợp logic dùng Design compiler. 4.2.1 Tổng hợp toàn bộ Với phương pháp này module cấp cao nhất sẽ được tổng hợp, ở một số phiên bản cũ của Design compiler việc tổng hợp các module lớn (>10k gates) là một nhiệm vụ hết sức khó khăn, tuy vậy ở các phiên bản sau thì Design Compiler đã có thể dễ dàng làm việc với các mô tả >100K gates. Ưu điểm của phương pháp này là chỉ cần một file script thiết lập điều kiện cho quá trình tổng hợp và quá trình tối ưu được thực hiện giữa các khối, mang lại hiệu quả cao. Nhược điểm là thời gian tổng hợp thường rất lâu, một thay đổi nhỏ của một khối sẽ dẫn đến phải làm lại từ đầu. Mặt khác với những thiết kế sử dụng có cấu trúc xung nhịp hệ thống phức tạp (multicycle paths, generated clocks) thì kết quả tổng hợp thường không đạt tối ưu. 4.2.2. Tổng hợp theo phương pháp chia nhỏ. Đối với phương pháp này thiết kế bị chia nhỏ thành các khối chức năng riêng, mỗi một khối được tổng hợp với các điều kiện ràng buộc riêng, sau đó mới tổng hợp module tổng dựa trên kết quả tổng hợp các khối con. Phương pháp này có ưu điểm là dễ dàng kiểm soát các mã tổng hợp cho các khối riêng, Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 20
- khi có sự thay đổi của một khối con thì chỉ cần tổng hợp lại riêng khối đó. Kết quả tổng hợp cũng sẽ tốt do các khối con được tối ưu theo đặc điểm riêng của khối. Nhược điểm là khi làm các khối đơn lẻ sẽ không dễ dàng quan sát được đường gây trễ cực đại cho toàn khối và không có sự tối ưu kết nối giữa các khối. Bên cạnh đó việc thành lập các file script tổng hợp riêng cho từng khối là tốn nhiều thời gian công sức. 4.2.3. Tổng hợp tổng thể sau đó phân tách để tối ưu. Đây là phương pháp rất hay được ứng dụng, nó phù hợp với những thiết kế cỡ vừa và phức tạp. Thiết kế đầu tiên sẽ được tổng hợp sơ bộ sau đó sẽ được đặc trưng hóa từng khối bằng lệnh characterize, lệnh này sẽ lấy các tham số của khối con trong mối quan hệ với khối chính và thực hiện tổng hợp riêng để tối ưu riêng. Việc này vẫn đảm bảo khả năng tối ưu giữa các khối con vừa cho phép tối ưu từng khối riêng lẻ, nghĩa là kết hợp được cả hai ưu điểm của phương pháp trên. Phương pháp này nếu làm đúng có thể mang lại kết quả tối ưu nhất so với hai phương pháp trên. Tuy vậy nhược điểm bao gồm các nhược điểm của cả hai phương pháp trên, thời gian tổng hợp sẽ lâu và việc tối ưu khối này có thể dẫn đến làm mất tính tối ưu của khối khác trong sơ đồ tổng thể và ngược lại, ảnh hưởng đó có thể làm cho trình tổng hợp làm việc tốn rất nhiều thời gian. 4.3. Kiểm tra sau tổng hợp logic Sau khi tổng hợp, Design compiler cho phép xuất ra file mô tả netlist để dùng cho mục đích kiểm tra, còn bản thân kết quả của quá trình tổng hợp được lưu dưới dạng file định kiểu có phần mở rộng là .db. Đó là đầu vào cho phần thiết kế vật lý ở bước sau này. File netlist là file mô tả bằng VHDL sử dụng các cell chuẩn trong thư viện, tương tự như khi ta làm việc với FPGA, muốn mô phỏng được file này thì phải có mô tả thư viện tương ứng, tức là mô tả chức năng của các cell trong thư viện chuẩn mà ta làm việc. Mô tả này thường đi kèm theo trong thư viện hoặc có thể được tạo ra từ các file thư viện gốc băng chương trình Library compiler. Chi tiết về quá trình này ta sẽ tìm hiểu ở phần thực hành thiết kế ở cuối chương này. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 21
- 5. Thiết kế vật lý (Physical design) Physical design hay Back-end design: Mỗi bước của giai đoạn thiết kế hoàn thiện giải quyết một bài toán tối ưu. Như đã trình bày ở trên, vi mạch logic tích hợp một khối lượng khổng lồ các phần tử logic vì vậy các bài toán như sắp đặt, phân bố, kết nối được thực hiện nhờ những chương trình hỗ trợ thiết kế (CADs). Mục tiêu của các bài toán này là hiện thực hóa thiết kế lên đối tượng vật lý cụ thể và các tham số tối ưu là thời gian trễ (delay timing), diện tích (area), mức độ tiêu tốn năng lượng (power consumtion) Floorplaning: Tại bước này các khối logic sẽ được sắp xếp, phân bố lên không gian bán dẫn cụ thể. Nếu như mô tả logic trong netlist chỉ cung cấp thông tin những phần tử nào được sử dụng và kết nối giữa chúng như thế nào thì tại bước này các khối logic sẽ được tính toán để phân bố một cách tương đối hợp lý trên chip vật lý cụ thể. Bên cạnh đó tại bước này cũng sẽ tính đến vị trí bố trí của các khối ngoại vi như RAM, ROM Và sự bố trí của các vị trí lưới nguồn cấp Vcc và nối đất Ground. Tham số tối ưu số 1 ở bước này là diện tích sử dụng, thông thường yêu cầu tối thiểu là phải đạt được từ 85-80%. Placement: Bước này giải quyết bài toán phân bố ở mức chi tiết hơn là bài toán đối với các cổng logic, các cổng logic đối với các thư viện chuẩn như AND, OR, XOR, NAND Khi giải quyết bài toán phân bố đối với cổng logic thì một trong những tiêu chuẩn quan trọng để tìm lời giải cho phương án hợp lý là đạt được thời gian trễ (delay timing) hay xung nhịp làm việc của vi mạch. Clock Tree Synthesis:Đặc thù riêng của tín hiệu tạo xung nhịp (clock) là tín hiện thường xuất phát từ một vị trí (clock generator) và dùng cho tất cả các thanh ghi nhớ (các thanh ghi điều khiển, RAM, ROM ) có trong thiết kế, số lượng các thanh ghi này thường rất lớn và được phân bố rộng khắp trên không gian thiết kế vì vậy nhiệm vụ của bước nàychia sẻ tín hiệu clock đến các vị trí khác nhau đồng thời đảm bảo sự hoạt động đồng bộ của các thanh ghi tức là các tín hiệu này phải hoàn toàn trùng pha. Như vậy về thực chất phải giải quyết hai vấn đề: thứ nhất là chia tín hiệu clock mà không làm suy yếu tín hiệu, thứ hai, bù đắp độ trễ của tín hiệu clock tại các vị trí khác nhau do sự khác biệt về khoảng cách từ chúng đến nguồn cung cấp, trong FPGA nhiệm vụ này được thực hiện tự động bởi các khối DCM. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 22
- Routing: Là giai đoạn thực hiện kết nối giữa các cổng logic theo như mô tả trong netlist và mô tả không gian phân bố cổng sau bước placement để đạt được mục tiêu thiết kế. Routing sẽ phải giải quyết một loạt các bài toán liên quan đến đường đi ngắn nhất để nhằm giảm tối đa độ trễ cũng như sự suy giảm tín hiệu do kết nối. Thông thường độ trể của cổng logic lớn hơn nhiều so với độ trên kết nối, tuy vậy khi các công nghệ mới cho phép thu nhỏ kích thước của các cổng lại thì tương quan này đã thay đổi. Sau quá trình Routing thì có thể thu được một thông số tương đối chính xác về độ trễ của mạch. Verification: Tại bước này có thể tiến hành song song 3 quá trình kiểm tra thiết kế: -Formal Verification Sau các quá trình tối ưu ở BACK-END DESIGN gồm Floorplaning. Placement, Clock Tree Synthesis, Routing thì đã có một số thay đổi trong thành phần cũng như vị trí các cổng kéo, Netlist thu được sau quá trình này sẽ được so sánh kiểm tra về chức năng logic đối với netlist sau tổng hợp logic. - Timing Verification Thiết kế được định hinh về vị trí các cổng cũng như kết nối giữa chúng thì cho phép tính toán mô phỏng các tham số ký sinh về điện trở, điện dung (parasitic extraction of the resistances and capacitances) và trên cơ sở đó đưa ra các thông số chính xác về thời gian của mạch. Trong trường hợp những thông số này không đảm bảo mục tiêu thiết kế đề ra thì buộc phải quay lại các bước trên, thậm chí quay lại FRONT-END DESIGN để tiến hành những hiệu chỉnh cần thiết. -Physical Verification Kiểm tra vật lý bao gồm các kiểm tra sau Design Rule Checks (DRC) Kiểm tra phát hiện những vi phạm có thể phát sinh do đặc điểm công nghệ và trong quy trình chế tạo bán dẫn. Electrical Rule Checks (ERC) Kiểm tra các lỗi về mạch điện như hở mạch, ngắn mạch, để trống các cổng vào ra không sử dụng đến. Layout Versus Schematic (LVS) Kiểm tra tổng thể thiết kế vật lý về mặt số lượng linh kiện, sự chính xác của các các kết nối so với sơ đồ logic ban đầu. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 23
- Bài tập chương 4. Bài tập (*)Nhóm các bài tập cho chương này đều là các bài tập dạng nâng cao, một số lớn các bài ở đây sinh viên muốn thực hiện phải tìm hiểu sơ đồ thuật toán ở các tài liệu tham khảo ngoài giáo trình hoặc dưới sự hướng dẫn của giáo viên. Bài 1: Tổng hợp các khối cơ bản bộ cộng, thanh ghi, bộ đếm, máy trạng thái, đã thực hiện ở chương II và chương III trên thư viện cổng chuẩn Bài 2: Thiết kế và tổng hợp trên thư viện 130nm bộ cộng 32-bit sử dụng cấu trúc nối tiếp sử dụng một full_adder và hoạt động ở 32 xung nhịp. Bài 3: Thiết kế và tổng hợp trên thư viện 130nm bộ cộng 32-bit sử dụng cấu trúc nối tiếp sử dụng một 32 full_adder, so sánh kết quả tổng hợp với kết quả ở bài 1. Bài 4: Thiết kế và tổng hợp bộ cộng sử dụng thuật toán thấy nhớ trước Carry- look Ahead adder. So sánh và giải thích kết quả thu được với các kết quả ở bài 1 và bài 2. Bài 5: Thiết kế bộ dịch trái, phải logic và số học 32 bít, giá trị dịch đầu vào là 5 bit không sử dụng các lệnh dịch có sẵn của VHDL (sll, sla, srl, sra, ror, rol). Tổng hợp thiết kế trên thư viện 130nm. Bài 6: Thiết kế và tổng hợp trên thư viện 130nm bộ nhân số nguyên 16 bit x 16 bit sử dụng thuật toán cộng dịch tuần tự với phương pháp dịch phải (sequential multiplication with right shift) Bài 7: Thiết kế và tổng hợp trên thư viện 130nm sử dụng thuật toán cộng dịch tuần tự với phương pháp dịch trái (sequential multiplication with right shift). Bài 8: Thiết kế và tổng hợp trên thư viện 130nm bộ chia 8 bit cho 4 bit số nguyên không dấu sử dụng thuật toán phục Restoring unsigned division. Bài 9: Thiết kế và tổng hợp trên thư viện 130nm bộ chia 8 bit cho 4 bit số nguyên không dấu sử dụng thuật toán phục Restoring unsigned division. Nonrestoring unsigned division (8 bit cho 4 bit) Bài 10 Nghiên cứu về chuẩn IEEE 754-1985 của số thực dấu phảy động. Hiện thực hóa bộ nhân số thực, hỗ trợ một kiểu làm tròn như sau: Số dạng nhị phân 1.1xxx -> 10.0 Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 24
- Số dạng nhị phân 1.0xxx -> 1.0 Bài 11 Nghiên cứu về chuẩn IEEE 754-1985 của số thực dấu phảy động. Hiện thực hóa bộ chia số thực, hỗ trợ một kiểu làm tròn như phép nhân. Tổng hợp, kiểm tra thiết kế. Bài 12: Nghiên cứu về chuẩn IEEE 754-1985 của số thực dấu phảy động. Hiện thực hóa bộ cộng số thực, hỗ trợ một kiểu làm tròn như phép nhân. Bài 13: Thiết kế kế và tổng hợp mạch tổ hợp thực hiện biến đổi nén 32 bit dữ liệu với các tham số đầu vào như sau: N – Số lượng bit của mổi đơn vị khối dữ liệu đầu vào N: 2, 4, 8, 16, 32. M – Số lượng bit của mỗi đơn vị khối dữ liệu đầu ra.(N M). M: 2, 4, 8, 16, 32) Ví dụ N=8, M= 4 Tổ hợp gốc Tổ hợp đầu ra Bài 14: Thiết kế kế và tổng hợp mạch tổ hợp thực hiện biến đổi giải nén 32 bit dữ liệu với các tham số đầu vào như sau: N – Số lượng bit của mổi đơn vị khối dữ liệu đầu vào N: 2, 4, 8, 16, 32. M – Số lượng bit của mỗi đơn vị khối dữ liệu đầu ra.(N <= M). M: 2, 4, 8, 16, 32) Tín hiệu SE = 1 giải nén có dấu, SE= 0 giải nén không dấu. Ví dụ N=4, M= 8 Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 25
- Với N=8, M= 16, SE = 1: 0 1 0 1 00000000 11111111 00000000 11111111 Bài 16: Thiết kế khối thực thi ALU trong vi xử lý có khả năng nhận mã lệnh 32 bit và thực hiện các phép toán cộng, trừ, dịch, logic. Dữ liệu tính toán là 2x32 bit được đưa vào khối ALU từ thanh ghi của vi xử lý. Mã lệnh do người thiết kế tự quy định. Bài 17: Thực hiện bộ nhân ma trận M 4x4 với vector X thu được vector 4 phần tử số nguyên. Mạch làm việc là mạch tuần tự, xung nhịp thứ nhất xuất hiện hàng thứ nhất của vector và vector X, xung nhịp thứ 2 xuất hiện hàng kế tiếp của M và cứ như vậy cho tới khi kết thúc. Bài 18: Thiết kế bộ giải mã kênh số học logic ALC1 thực hiện các lệnh sau đây trong tổ hợp lệnh của kiến trúc MIPS ALU instructions for channel ALC1 (MIPS-I) № Mnemonic Opcode function Unit description ARITHMETRIC INSTRUCTIONS 1 ADD 000000 100000 IA To add 32-bit integers. 2 ADDI 001000 IA To add a constant to 32-bit integer 3 ADDU 000000 100001 IA To add 32 bit integer without setting OV 4 ADDIU 001001 IA To add a constant to 32-bit integer without setting OV Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 26
- 5 SUB 000000 IA To subtract 32-bit integers 100010 6 SUBU 000000 IA To subtract 32-bit integer 100011 without setting OV SHIFT INSTRUCTIONS 7 SLL 000000 SH To logical left shift a word by a 000000 fixed number of bits 8 SLLV 000000 SH To logical left shift a word by a 000100 variable number of bits 9 SRA 000000 SH To arithmetic right shift a word 000011 by a fixed number of bits 10 SRAV 000000 SH To arithmetic right shift a word 000111 by a variable number of bits 11 SLR 000000 SH To logical right shift a word by 000010 a fixed number of bits 12 SLRV 000000 SH To logical right shift a word by 000110 a variable number of bits Đối với các phép toán số học Logic thì không cần tối ưu thiết kế. Kiểm tra và tổng hợp thiết kế trên thư viện chuẩn. Bài 19: Bài toán điều khiển đèn giao thông thông minh có thể dựa vào lưu lượng người thực tế để tính toán thời gian đèn xanh, đỏ vàng. Số lượng người được theo dõi bằng các camera quan sát và được số hóa như sau. Số lượng người được quét và lưu thành một ma trận bit MxN, nếu giá trị bit tại vị trí x, y bằng 1 thì điểm quét đó có phương tiện hoặc người chờ lưu thông, nếu bằng 0 là trống. Xây dựng mô hình và thuật toán hiện thực bài toán trên. Tổng hợp trên thư viện cổng chuẩn. Bài 20: Bài toán điều khiển thang máy với số tầng tùy ý và làm việc như thang máy trên thực tế, cho phép nhiều người gọi cùng một lúc và áp dụng tính toán tối ưu cho quá trình phục vụ. Xây dựng mô hình và thuật toán thực hiện. Tổng hợp trên thư viện cổng chuẩn. Bài 21: Thiết kế giao tiếp trúc FIFO và tổng hợp trên thư viện chuẩn 130nm. Bài 22: Thiết kế giao tiếp trúc LIFO và tổng hợp trên thư viện chuẩn 130nm. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 27
- Bài 23: Thiết kế giao tiếp Dual-port RAM là cấu trúc RAM có hai cổng đọc/ghi độc lập có thể thực hiện các tác vụ đồng thời. Kiểm tra và tổng hợp thiết kế trên thư viện chuẩn. Nội dung ôn tập lý thuyết 1. Đặc điểm của thư viện cổng chuẩn và công nghệ thiết kế trên vi mạch trên thư viện này. 2. Đặc điểm công nghệ của cell, các tham số cơ bản của cell. 3. Trình bày sơ lược về công nghệ chế tạo IC. 4. Trình bày sơ đồ thiết kế trên thư viện cổng chuẩn. 5. Khái niệm tổng hợp logic trên thư viện cổng chuẩn. 6. Các dạng thiết lập yêu cầu và điều kiện ràng buộc cho tổng hợp logic trên thư viện cổng chuẩn. 7. Thiết lập các yêu cầu thiết kế về thời gian cho mạch dãy và mạch tổ hợp. 8. Trình bày sơ lược về quy trình thiết kế vật lý. 10. Nêu sự khác biệt cơ bản giữa thiết kế trên ASIC và trên FPGA. Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 28
- Chương IV - Thiết kế vi mạch sổ trên thư viện cổng chuẩn 29