1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

các phương pháp synthesis và optimize

26 468 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 2,65 MB

Nội dung

I.Các phương pháp Synthesis và Optimize. 1.1Quá trình Synthesis. Synthesis logic ( Tổng hợp Logic) là quá trình chuyển đổi mô tả cấp cao ( high-level description ) sang mô tả tối ưu hóa cấp cổng, dựa vào RTL Coding đã được viết, thư viện Standard Cell và các ràng buộc của thiết kế ( Design Constraints ) để tạo ra Gate-level Netlist. Hình1 .Synthesis Flow Các bước trong qui trình Synthesis: - Design Compiler (DC) đọc các thư viện kỹ thuật, thư viện DesignWare, thư viện kí hiệu để thực hiện tổng hợp. Trong quá trình tổng hợp, DC dịch RTL description sang thành phần rút ra từ thư viện công nghệ và thư viện Design Ware .Thư viện kỹ thuật bao gồm các cổng logic cơ bản và các flip flop. Thư viện DesignWare gồm các khối phức tạp như adders, comparators, có thể sử dụng lại trong các thiết kế khác. DC có thể tự động xác định khi sử dụng các khối trong thư viện Design Ware và nó có tổng hợp một cách hiệu quả các thành phần này trong gate-level implementations. - Đọc các mô tả phần cứng RTL viết bằng hoặc Verilog / VHDL. - Công cụ tổng hợp sẽ thực hiện nhiều bước bao gồm tối ưu hóa high-level RTL, RTL to unoptimized Boolean logic, tối ưu hóa công nghệ độc lập, và cuối cùng lập bản đồ công nghệ cho các standard cells có sẵn trong thư viện kỹ thuật, được gọi là thư viện đích. Kết quả là gate-netlist cũng phụ thuộc vào những ràng buộc đã đưa vào. - Sau khi thiết kế được tối ưu hóa, thiết kế đã sẵn sàng cho giai đoạn DFT ( Design for test ). DFT là một bài test logic, người thiết kế có thể tích hợp DFT trong quá trình Synthesis. Điều này có thể giúp người thiết kế có thể kiểm tra sớm các vấn đề trong chu trình thiết kế, và cũng có thể sử dụng trong quá trình gỡ lỗi khi chip bị trả về từ giai đoạn chế tạo. - Sau khi đã test synthesis, chip đã sẵn sàng cho giai đoạn place và route. Các công cụ place và route đặt vị trí và liên kết vật lý các cells trong thiết kế. Dựa vào việc đi dây vật lý, người thiết kế có thể chú thích lại cho thiết kế các delay thực tế. Chúng ta có thể sử dụng DC một lần nữa để resynthesis thiết kế để phân tích thời gian chính xác hơn. 1.2.Thiết đặt các điều kiện môi trường và ràng buộc cho thiết kế. 1.2.1. Thiết đặt điều kiện môi trường. Trước khi tối ưu hóa thiết kế, người thiết kế phải đặt các điều kiện môi trường mong muốn thiết kế có thể hoạt động được. Ta định nghĩa môi trường thông qua 2 thông số chính:Operating Conditions, Wire Load Model. 1.2.1.1. Operating Conditions ( Những điều kiện hoạt động) Operating Conditions bao gồm sự thay đổi về nhiệt độ, điện áp, quá trình hoạt động. Những sự thay đổi này ảnh hưởng mạnh đến hoạt động của mạch. Khi phân tích về mặt thời gian, Design Compiler sẽ xem xét điều kiện xấu nhất ( worst-case ) và điều kiện tốt nhất ( best-case ) về nhiệt độ, điện áp… mà thiết kế vẫn có thể hoạt động tốt được. Hầu hết các thư viện kỹ thuật đã định nghĩa trước tập hợp các thông số Operating Conditions, người thiết kế có thể chọn giá trị có sẵn trong thư viện hay tự định nghĩa. Nếu người thiết kế không chỉ ra Design Compiler sẽ chọn giá trị mặc định. 1.2.1.2. Wire Load Model ( Mô hình dây tải). Cho phép người thiết kế ước lượng được ảnh hưởng của điện trở, điện dung, khả năng chịu tải nhất định tương ứng với độ dài một đoạn dây. Từ đó phần mềm sẽ tính toán độ trì hoãn qua các dây. Người thiết kế phải chỉ ra cho phần mềm biết sử dụng loại dây nào, độ dài bao nhiêu cho các thiết kế thông qua các câu lệnh để thiết lập giá trị. Nếu người thiết kế không chỉ ra sử dụng Wire Load Model nào thì Design Compiler sẽ sử dụng Wire Load Model mặc định nhưng chắc chắn thông tin về timing và delay sẽ không chính xác như mong muốn. Design Compiler hỗ trợ ba cách trong cấu trúc phân cấp : • Mode Top: Wire Load Model ở Top Level sẽ được áp dụng trên tất cả các sub-module. Design Compiler sẽ bỏ qua tất cả các Wire Load Model của các sub-module. Sử dụng Wire Load Model ở mode top tương ứng với việc thiết kế sẽ được Flatten toàn bộ khi Place and Route. Hình2 .Mode Top. Nếu thiết đặt Wire Load Model cho thiết kế là mode Top thì việc ước lượng độ dài dây là không chính xác. Sử dụng độ dài dây là lớn nhất cho tất cả các sub block thì sẽ gây ra sai số lớn sau khi thiết kế được Place and Route. • Mode Enclosed: Wire Load Model chạy giữa hai module sẽ được áp đặt theo Wire Load Model chứa cả hai module đó. Sử dụng Wire Load Model ở mode enclosed sẽ chính xác hơn ở mode top khi những Cell trong cùng một thiết kế được đặt ở những vùng tiếp giáp nhau trong suốt quá trình Layout. Wire Load Model ở mode enclosed vẫn giữ cấu trúc phân cấp. Hình 3.Mode Enclosed. • Mode Segmented: Wire Load Model ở mode segmented thì một dây kết nối giữa hai module sẽ được chia thành nhiều đoạn, đoạn nào nằm trong module nào thì sẽ sử dụng Wire Load Model ở module đó. Wire Load Model ở mode segmented vẫn giữ cấu trúc phân cấp. Hình 4. Mode Segmented. Thiết đặt Wire Load Model theo mode Segmented thì việc ước lượng độ dài sẽ chính xác hơn vì dây trong sub block nào thì sử dụng Wire Load Model trong sub block đó nên ít gây ra sai số sau khi thiết kế được Place and Route. Thông thường thư viện kỹ thuật có thể định nghĩa Wire Load Model mặc định cho thiết kế, sử dụng thuộc tính default_wire_load để định nghĩa Wire Load Model mặc định cho thư viện kỹ thuật. Một số thư viện hỗ trợ việc chọn Wire Load Model tự động dựa trên diện tích Cell. Design Compiler sử dụng thuộc tính wire_load_selection của thư viện để chọn Wire Load Model dựa trên tổng diện tích các Cell. Với những thiết kế lớn có nhiều cấu trúc phân cấp thì việc để cho thư viện tự chọn Wire Load Model tự động là không tối ưu về mặt timing và delay. Người thiết kế nên thiết đặt các giá trị Wire Load Model bằng các câu lệnh tương tác trực tiếp với Design Compiler để đảm bảo tính chính xác và ổn định về mặt timing và delay. Người thiết kế có thể tắt chức năng tự chọn Wire Load Model bằng cách gán cho thuộc tính auto_wire_load_selection giá trị false. 1.2.2 Những ràng buộc cơ bản trong quá trình thiết kế logic chip. 1.2.2.1Ràng buộc luật thiết kế ( Design Rule Contrains).  Thời gian chuyển tối đa (Maximum transition time). Thời gian chuyển tối đa là khoảng thời gian dài nhất, cần thiết mà một chân của cell có thể chuyển Logic từ 1 xuống 0, hoặc 0 lên 1. Design Compiler mô tả giới hạn trên thông qua giá trị max_transition trên mỗi chân ra của một Cell. Trong suốt quá trình tối ưu hóa, Design Compiler cố gắng để thỏa thời gian chuyển Logic của mỗi chân của các Cell phải nhỏ hơn giá trị max_transition. Hình 5.Max_transition. Có thể thay đổi giá trị max_transition bằng lệnh set_max_transition. Việc thiết đặt giá trị max_transition càng lỏng thì phần mềm sẽ dễ dàng chọn các Cell nhưng thiết kế sẽ bị chậm. Thiết đặt giá trị max_transition càng chặt thì phần mềm sẽ phải thay đổi Cell để thỏa hoặc là thêm những bộ đệm ( buffer ) vào giảm delay nhưng lúc đó diện tích thiết kế sẽ tăng mạnh.  Khả năng chịu tải lớn nhất (Maximum fanout load). Maximum fanout load là giá trị tải lớn nhất mà chân chịu tải có thể tải được. Design Compiler sẽ tính giá trị max_fanout trên một pin bằng cách kết hợp với giá trị fanout_load từ tất cả các pin xuất phát từ pin đó. Thiết kế sẽ thỏa ràng buộc về giá trị chịu tải của driving pins nếu tổng fanout_load nhỏ hơn max_fanout. Thiết đặt giá trị max_fanout bằng lệnh set_max_fanout. Hình 6.Max Fanout Ví dụ: pin X tải hai pin A và B. Pin A có fanout_load là 5.0, pin B có fanout_load là 8.0 thì fanout_load tổng cộng của pin X là 13.0. Nếu max_fanout của pin X là 16.0 thì thỏa ràng buộc về khả năng chịu tải của driving pins. Ví dụ với một chân phải tải nhiều chân khác như sau: Hình 7.Ví dụ về Max Fanout. Khi ta set max_fanout của chân chịu tải trên hình chặt lại thì phần mềm có thể thay đổi Cell sao cho phù hợp. Nếu các Cell đó có fanout_load là nhỏ nhất rồi thì phần mềm sẽ thêm vào các buffer để chia khả năng gánh tải như hình sau đây nhưng thiết kế sẽ tăng về diện tích. Hình 8.Thên buffer cho thiết kế.  Điện dung lớn nhất ( Maximum capacitance ). Điện dung lớn nhất là một thiết đặt về điện dung của dây nối. Các pin không thể kết nối với một net có tổng điện dung (điện dung tải và điện dung kết nối ) lớn hơn hoặc bằng điện dung tối đa quy định tại pin. Giá trị max_capacitance là độc lập với max_fanout và max_transition nên có thể dùng chung với hai giá trị đó. Thông thường trong thiết kế ta chỉ thiết đặt hai trong ba giá trị trên thì phần mềm sẽ tính toán cho giá trị còn lại. Ta dùng lệnh set_max_capacitance để đặt môt giá trị điện dung trên các cổng input. Giá trị này nên nhỏ hơn hoặc bằng các max_capacitance của pin lái net.  Điện dung nhỏ nhất ( Minimum capacitance). Điện dung nhỏ nhất qui định cụ thể tải nhỏ nhất mà một cell có thể lái được. Trong quá trình tối ưu hóa, Design Compiler đảm bảo cho các tải được lái bởi một cell phải đạt được yêu cầu điện dung nhỏ nhất cho cell đó. Nếu xảy ra lỗi, Design Compiler sẽ sữa lỗi đó bằng cách định cỡ lại cell. Điện dung nhỏ nhất có độ ưu tiên cao hơn các ràng buộc về thời gian chuyển tối đa, khả năng chịu tải tối đa,và điện dung lớn nhất. Ta dung lệnh set_min_capacitance để thiết đặt giá trị điện dung nhỏ nhất.  Phẩm chất đơn vị cell (cell degradation). Phẩm chất đơn vị cell là sự giảm phẩm chất cell. Luật thiết kế định rõ giá trị điện dung cho một net phải nhỏ hơn giá trị suy giảm phẩm chất cell. Luật phẩm chất cell có thể dùng chung với các luật thiết kế khác. Nhưng luật điện dung tối đa có đôn ưu tiên cao hơn. Vì thế nếu luật điện dung tối đa không bị lỗi thì khi áp dụng luật phẩm chất đơn vị cell, thiết kế sẽ không bị lỗi. Để thiết đặt giá trị cho luật phẩm chất đơn vị cell ta dùng lệnh set_cell_degradation. 1.2.2.2 Ràng buộc tối ưu hóa.  Ràng buộc thời gian. Xung Clock và các thuộc tính của xung Clock như Latency, Uncertainty, Transition … rất cần thiết cho việc cho việc phân tích chính xác các đoạn thời gian ( timing paths ) trong thiết kế. Người thiết kế phải thiết đặt các giá trị clock latency, uncertainty, transition v.v… trong giai đoạn Front End với mục đích tạo ra một độ dự trữ ( margin ) cho thiết kế vì trên thực tế clock không thể từ nguồn đến ngay chân clock của các register. Vì trong giai đoạn Front End clock không có các giá trị này nên ta buộc phải thêm độ dự trữ vào. Giả sử nếu không thiết đặt các giá trị này, giai đoạn Front End kiểm tra thỏa về timing nhưng sau khi Place and Route thiết kế sẽ không đạt yêu cầu. Design Compiler không tự tạo ra xung Clock khi thực thi thiết kế, người thiết kế phải tự tạo ra xung Clock bằng lệnh create_clock. create_clock -period 20 CLK50 Hình 9.Tạo Clock CLK50 với chu kì 20ns. • Ideal Clock ( Clock lý tưởng) Ideal Clock là Clock mà không có thời gian trễ khi truyền từ nguồn xung Clock đến chân xung Clock của các thiết bị thanh ghi. • Propagated Clock ( Clock lan truyền) Ngược với Ideal Clock, Propagated Clock là Clock có độ nghiêng do có khoảng thời gian trễ từ nguồn xung Clock đến chân xung Clock của các thiết bị thanh ghi. • Clock Network (Clock mạng) Clock Network hay còn gọi là Clock Tree là Clock rẽ ra thành nhiều nhánh trước khi đến chân xung Clock của các thiết bị thanh ghi. Mặc định Design Compiler xem Clock Network là Clock lý tưởng ( không có độ trì hoãn ). Để phân tích chính xác về mặt timing của thiết kế, người thiết kế cần thiết đặt những giá trị liên quan đến Clock Network như Uncertainty, Latency, Transition … sẽ được trình bày tiếp theo sau đây. Hình10 .Clock network. • Clock Uncertainty ( Độ bất định clock) Uncertainty là sự sai khác lớn nhất về độ trì hoãn giữa các Clock nhánh của Clock Network. Thiết đặt Clock Uncertainty xác định lề ( margin ) cho phép các giá trị Clock truyền có thể đến sớm hay muộn nhưng phải nằm trong lề đó. Thiết đặt giá trị Clock Uncertainty bằng lệnh set_clock_uncertainty. Hình 11. Clock Uncertainty Hình 12. Waveform của Clock Uncertainty • Clock Latency ( Thời gian chờ clock) Clock Latency là khoảng thời gian để tín hiệu Clock đi từ điểm của nguồn lý tưởng đến chân của thiết bị thanh ghi trong thiết kế. Clock Latency gồm có hai phần : Source Latency và Network Latency. [...]... lớn nên muốn phân tích chính xác về mặt timing ta thường thiết đặt các ràng buộc cho các input và output của các design nhỏ hay các module kết nối với nhau trong phạm vi hệ thống đó Hình 20 input_delay và output_delay • Input delay (Dộ trễ đầu vào) Input delay là khoảng thời gian từ khi có Clock lên đến khi dữ liệu ổn định tại ngõ vào của thiết kế Thiết đặt giá trị input delay bằng lệnh set_input_delay... Asynchronuos path Trong đó data path và clock path đóng vai trò quan trọng và ảnh hưởng nhiều nhất đến phân tích thời gian tĩnh Ngoài cách phân loại như trên người ta còn có cách phân loại sau: - Từ chân vào input đến thanh ghi ( register) => path 1 - Từ thanh ghi đến thanh ghi => path 2 - Từ thanh ghi đến chân ra (output) => path 3 - Từ chân vào đến chân ra => path 4 Hình29 Các loại Timing paths 3.2.2 Thời... phỏng STA được thực hiện ở trạng thái tĩnh và không phụ thuộc và giá trị đang được áp dụng tại các chân đầu vào Mục đích của việc phân tĩnh là kiểm tra xem thiết kế có hoạt động được ở tốc độ xung clock hay các ràng buộc đã được đặt ra từ những yêu cầu ứng dụng ban đầu hay không Phân tích thời gian tĩnh được thực hiện ở hai giai đoạn: Front_End có pre_layout STA và Back_End có pót_layout STA Hình24 Static... Khuyết điểm : • Mỗi sub-block đòi hỏi cách tổng hợp riêng vì thế cần nhiều script cho từng sub-block • Đòi hỏi phải kiểm tra kỹ càng từng sub-block cho việc tối ưu III.Phân tích thời gian tĩnh ( Static Timing Analysis-STA) Phân tích thời gian tĩnh là phương pháp kiểm tra thời gian của thiết kế bằng cách kiểm tra tất cả các vi phạm thời gian có thể có trong tất cả các đường dẫn mà không cần mô phỏng STA... mạch vòng khóa pha PLL ( Phase locked loop) để bắt giữ và sữa lỗi tín hiệu vào FM 4.1Sơ đồ mạch điện Cấu trúc mạch FM Decode gần giống như mạch PLL gồm các khối như phase detector , vco ( thay bằng nco), loop filter, và một số khối hỗ trợ khác Hình31.Sơ đồ khối mạch FM Decode 4.2.Giải thích các khối • fm: Đây là phần tử chính, dùng để liên kết với các phần tử khác để tạo nên mạch PLL.Chức năng của fm... Khối NCO hoạt động như một bộ đếm lên nhị phân biến đổi được điều khiển bởi tín hiệu vào Vì vậy tần số ngõ ra của nó thay đổi theo giá trị ngõ vào Hình 33.Khối NCO • Phase_detector: Chức năng của bộ này là phát hiện sự khác pha giữa tín hiệu vào và tín hiệu từ NCO Phase _detector có thể hoạt động bởi nhiều tín hiệu vào và tín hiệu ra từ NCO Hình34 Khối phase_detector • Loop_filter: Bộ lọc tồn tại trong... thiết kế hoàn toàn tối ưu phải đáp ứng được yêu cầu thời gian và chiếm diện tích nhỏ nhất Tuy nhiên trên thực tế để thực hiện điều này rất khó nên tối ưu hóa thiết kế được thực hiện trong điều kiện không khắt khe, nghĩa là tùy theo yêu cầu, mục đích của thiết kế mà chọn phương pháp tối ưu thích hợp nhất Một thiết kế bao gồm nhiều khối, trong các khối đó lại được chia ra nhỏ hơn, cấu trúc này gọi là cấu... Từ thanh ghi đến chân ra (output) => path 3 - Từ chân vào đến chân ra => path 4 Hình29 Các loại Timing paths 3.2.2 Thời gian trì hoãn Tổng thời gian delay từ đầu vào đến đầu ra của một đường là tổng thời gian delay của tất cả các cell và các net trên một đường đó: Total Delay/path = ∑ Cell delay/path + ∑ Net delay/path  Cell delay ( thời gian trễ cổng): là thời gian delay từ input đến output của một... 15 Source Latency và Network Latency • Clock Transition ( Thời gian chuyển clock) Clock Transition là khoảng thời gian để Clock Network chuyển trạng thái Logic từ 0 lên 1 hay từ 1 xuống 0 Hình 16 Clock Transition • Clock Gating ( Clock cổng) Clock Gating là Clock Network kết hợp với các cổng Logic trước khi đến chân Clock của các thiết bị thanh ghi, ví dụ ta có cổng AND có hai ngõ vào với một là Clock... ngõ vào của một khối kế tiếp Khi ta thiết đặt ràng buộc cho input_delay và output_delay càng lớn thì phần mềm sẽ phải tối ưu sao cho thời gian qua các khối logic bên trong thiết kế càng nhỏ  Design Exceptions • False-paths Trong thiết kế khi phân tích về mặt thời gian có những đoạn thời gian ta không cần phân tích thì ta sẽ dùng lệnh set_false_path để chỉ cho Design Compiler bỏ qua không phân tích và . I .Các phương pháp Synthesis và Optimize. 1.1Quá trình Synthesis. Synthesis logic ( Tổng hợp Logic) là quá trình chuyển đổi mô tả. tạo. - Sau khi đã test synthesis, chip đã sẵn sàng cho giai đoạn place và route. Các công cụ place và route đặt vị trí và liên kết vật lý các cells trong thiết kế. Dựa vào việc đi dây vật lý,. thiết đặt các ràng buộc cho các input và output của các design nhỏ hay các module kết nối với nhau trong phạm vi hệ thống đó. Hình 20. input_delay và output_delay • Input delay (Dộ trễ đầu vào). Input

Ngày đăng: 22/10/2014, 06:56

TỪ KHÓA LIÊN QUAN

w