Giáo trình Transitor - Chương 5: Thiết kế vi mạch số trên thư viện cổng chuẩn

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 10

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.

pdf29 trang | Chia sẻ: trungkhoi17 | Lượt xem: 560 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Transitor - Chương 5: Thiết kế vi mạch số trên thư viện cổng chuẩn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 8 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 9 Mô tả thuật toán (Specifitation) RTL - coding RTL Simulation/ Verification Tổng hợp (Synthesis) Logic Verification FRONT-END DESIGN Floorplaning (Specifitation) Placement Clock Tree Synthesis Routing Verification (Formal, Timing, Physical) BACK-END DESIGN 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 10 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 11 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ế. TECHNOLOGY LIBRARY LOGIC SYNTHESIS RTL model CONSTRAINT .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 12 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 CONSTRAIT DESIGN 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 13 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 14 Đ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 15 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 16 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 17 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 <clock 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 18 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 19 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 20 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 21 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 22 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ác file đính kèm theo tài liệu này:

  • pdfgiao_trinh_transitor_chuong_5_thiet_ke_vi_mach_so_tren_thu_v.pdf