Các phương pháp tối ưu trong Fix Cell

Một phần của tài liệu thiết kế vật lý hệ thống trên vi mạch sử dụng công nghệ cmos 90nm tsmc (Trang 54 - 90)

3.6.4.1. Timing-Driven Placement

Mục đích chính của timing-driven placement là giảm tối đa sự khác biệt về thời gian khi có sự chuyển đổi super model cell thành các cell thật sự. Thật vậy, trong quá trình phân tích trên đường truyền các cell có thể được thay thế để tăng khả năng lái tải hoặc thỏa một số ràng buộc nào đó. Nhưng chính việc thay đổi này gây sự khác biệt về thời gian vì bản thân mỗi cell có một khả năng lái tải và thời gian trễ nhất định.

Chính vì thế khi phân tích và có sự chuyển đổi từ model super cell sang standard cell có thể có sự khác biệt về thời gian.

Timing-driven placement thực hiện:

 Sau khi sau khi chuyển từ model super cell sang standard cell (sizing cell) .  Sau khi hoàn thành việc đi các dây còn lại ở bước fix wire.

3.6.4.2. Incremental Placement và ECO Placement

Phương pháp tối ưu incremental placement thực hiện lại global placement trên những vùng thiết kế có sự thay đổi. Bên cạnh đó ta dùng phương pháp tối ưu ECO placement để thực hiện detail router cho những vùng thiết kế có sự thay đổi.

Ta dùng incremental placement để chỉnh sửa việc sắp xếp khi có sự thay đổi trong thiết kế như là: thêm cell mới, chèn placement blockage. Incremental placement được áp dụng sau khi thực hiện các phương pháp tối ưu thiết kế. Trên lưu đồ fix cell ta có thể thấy sau mỗi bước ta đều thực hiện lại incremental placement.

Thường incremental placement được dùng nhiều hơn ECO placement trong các trường hợp: sau khi di chuyển các cell một khoảng xa, hoặc là thay đổi việc sắp xếp các cell. Ngoài ra incremental placement được dùng nhiều hơn ECO placement trong trường hợp sau khi thêm nonbuffer placement blockage. Bởi vì ECO placement thực hiện detail router mà detail placer thì không quan tâm đến nonbuffer blockage.

3.7. Thiết lập hệ thống clock - Fix Clock

3.7.1. Mục đích

Thực hiện chèn và tối ưu hệ thống clock. Hệ thống clock vừa chèn tùy thuộc vào một số ràng buộc về thời gian và số lượng flip-flop có trong thiết kế.

3.7.2. Các phương pháp thực hiện

Để hình thành một hệ thống clock hoàn chỉnh cho thiết kế trước hết cần phải xác định các luật, thông số cho hệ thống clock thông qua các lệnh config, force, rule. Sau đó tạo cấu trúc clock và tối ưu hệ thống clock vừa tạo. Có 3 bước chính cần thực hiện để tạo clock hoàn chỉnh :

 Xác định các luật, thông số cho hệ thống clock  Thiết lập cấu trúc clock

 Tối ưu cấu trúc clock

Trong quá trình thiết lập clock có 2 thông số cần quan tâm là slew và latency. Latency là khác biệt về thời gian đến tại hai điểm trên cùng một cấp của clock. Còn slew là khác biệt về thời gian cạnh lên hoặc khác biệt thời gian của cạnh xuống tại 2 điểm khác nhau trên cấu trúc clock. Một cấu trúc clock được đánh giá là tốt khi giá trị slew và latency của clock gần 0. Tức là clock gần như đồng bộ tín hiệu tại flipflop.

3.7.3. Xác định các luật, thông số clock

Clock được xác định thông qua chu kỳ và thuộc tính dạng sóng của nó. Ta gán những thuộc tính của dạng sóng sử dụng bằng giá trị của cạnh lên và cạnh xuống của xung clock. Còn chu kỳ xung clock được định nghĩa là khoảng thời gian giữa cạnh clock tác động và thời gian dữ liệu được lưu trữ.

Ví dụ:

Theo hình vẽ trên ta thấy clock có chu kỳ là 4ns, thời gian cạnh lên (rise time) và thời gian cạnh xuống (fall time)

Thiết kế tuần tự chịu sự tác động theo hai cách: tác động thông qua mức logic (mức 1 hoặc mức 0) hoặc cạnh của clock. Nhưng vì trong thiết kế ta dùng các flip flop nên ta chỉ quan tâm đến tác động theo cạnh clock.

Ta có thể xác định các luật và thông số của hệ thống clock bằng các lệnh config, force, rule.

 Lệnh config cho phép ta xác định các tùy chọn được sử dụng bởi các lệnh trong suốt quá trình hình thành clock tree. Một số lệnh config sau thường sử dụng:

+ config clock gate_cloning xác định tùy chọn dùng cho việc tối ưu tránh hiện tượng fanout ở ngõ ra.

+ config timing adjust latency xác định tùy chọn chỉnh sửa network, I/O latency sau khi clock được chèn vào.

 Lệnh force để thiết lập ràng buộc ảnh hưởng đến những thông số mà ta dùng trong suốt quá trình hình thành cấu trúc clock. Một số lệnh force thường dùng:

+ force plan clock thiết lập clock router và chế độ minimization skew.

+ force timing clockxác định clock đối với việc định thời. Việc này ước lượng thời gian trì hoãn trong phân tích thời gian.

 Lệnh rule cho phép ta dùng các luật thiết kế (design rules) trong suốt quá trình hình thành và tối ưu clock tree. Để tín hiệu clock chính xác thì đòi hỏi một số yêu cầu thiết kế cho clock như width, via, luật về khoảng cách… phải khác với tín hiệu thông thường. Do đó dùng lệnh rule nondefault để tạo các luật thiết kế đặc trưng cho clock.

3.7.4. Thiết lập cấu trúc clock

Điểm quan trọng nhất khi hình thành một cấu trúc clock là làm sao cho thời gian đến các flip-flop gần như phải đồng bộ. Có hai cấu trúc clock tree thường gặp:

3.7.4.1. Cấu trúc nhóm (Clusturing Algorithm)

Trong cấu trúc nhóm, các flip flop sẽ được nhóm sao cho tại các điểm cân bằng trong cùng nhóm của chúng cân bằng về thời gian đến. Sau đó các nhóm sẽ được chèn buffer để gánh tải của nhóm (bước 1 trong hình vẽ).

Giữa các nhóm sẽ được nối với với buffer lớn hơn đủ mạnh để gánh tải của tất cả các nhóm và đảm bảo cho việc cân bằng thời gian giữa tất cả các nhóm.

Hình 3.33: Cấu trúc nhóm (Clusturing Algorithm)

Nếu thiết lập clock theo kiểu cấu trúc nhóm thì tiết kiệm về diện tích cũng như các buffer. Nhưng xét về mặt thời gian có thể không tốt bằng cấu trúc H-tree.

3.7.4.2. Cấu trúc phân cấp (H – Trees)

Các điểm cân bằng của các flip-flop được nối theo dạng chữ H. Cấu trúc H-tree vừa tạo sẽ được kết hợp với những cấu trúc H-tree khác hình thành nên cấu trúc H-tree lớn hơn. Sau đó tại mỗi điểm cân bằng sẽ được chèn buffer để gánh tải cũng như cân bằng về thời gian đến tại mỗi điểm.

Hình3.34 Cấu trúc H-tree clock

Thiết lập cấu trúc H-tree thì thời gian đến tại các flip-flop gần như là đồng bộ. Việc phân tích thời gian sẽ có độ chính xác lớn. Nhưng việc dùng buffer tại mỗi điểm cân bằng sẽ chiếm nhiều diện tích thiết kế hơn. Do đó trong một số ứng dụng quan tâm đến diện tích thì cấu trúc H-tree là trở ngại.

3.7.5. Một số phương pháp tối ưu

Hệ thống clock khi thiết lập cần thỏa một số luật, ràng buộc của thiết kế và quan trọng hơn hết là làm sao cho thời gian đến tại các flip-flop gần như đồng bộ. Từ những yêu cầu trên việc dùng buffer và một số phương pháp tối ưu khác rất cần thiết để có thể thiết lập được một hệ thống clock tốt. Một số phương pháp tối ưu sau được áp dụng trong bước fix clock:

Holding buffering: Buffer ngoài tác dụng gánh tải, giúp chống lại hiện tượng fanout còn có tác dụng giúp làm đồng bộ giữa các tín hiệu.

Resizing: Khi thiết lập hệ thống clock nếu có một số yêu cầu về thời gian không thỏa kể cả khi chèn các buffer mà tình trạng vẫn không tốt hơn thì cần lựa chọn phương pháp resizing. Lúc này một số cell, buffer sẽ được thay thế bằng cell, buffer khác sao cho thỏa yêu cầu về thời gian.

Pin swapping: Hoán đổi ngõ vào logic để có thể giúp tối ưu slack. Với slack là sự khác biệt giữa thời gian đến và thời gian yêu cầu.

Slack = Required time – Arrival time

Nếu slack là số không âm thì tốt. Còn nếu slack âm thì cần xem xét và chỉnh sửa để đưa slack về giá trị dương hoặc càng gần 0 càng tốt.

Hình 3.36: Trước khi thực hiện pin swapping (hệ số slack âm)

3.8. Đi các đường signal, clock và đường power còn lại - Fix Wire

3.8.1. Mục đích

Mục đích chính của Fix Wire là hoàn thành việc đi các đường tín hiệu, các đường power, các đường clock còn lại. Ở bước này Magma tool sẽ hỗ trợ việc sửa một số lỗi antenna. Sau khi hoàn thành bước fix wire, chúng ta sẽ có một cơ sở dữ liệu vật lý không có lỗi DRC/LVS, thời gian cũng như các lỗi antenna.

3.8.2. Lưu đồ thực hiện fix wire

Hình 3.38: Lưu đồ thực hiện Fix Wire

3.8.2.1. Stub Routing

Đây là bước đầu tiên khi thực hiện Fix Fire. Công việc chính của bước này là đi các đoạn metal ngắn trên lớp metal 1. Đi những đường dây kết nối trên những standard cell gần nhau. Hình bên dưới mô tả các đoạn metal ngắn được thực hiện thông qua stub routing. Khi một liên kết đã được thực hiện stub routing thì liên kết này sẽ không thực hiện ở bước global routing và track routing.

STUB ROUTING

GLOBAL ROUTING

TRACK ROUTING

DETAILED ROUTING

Hình3.39: Các đọan metal ngắn được hình thành sau khi stub routing

Có thể thực hiện stub routing thông qua một trong hai lệnh sau được hỗ trợ trong Magma tool:

 Dùng lệnh fix wire. Lệnh fix wire hổ trợ tất cả bước stub routing, global routing, detailed routing trong suốt quá trình thực hiện fix wire.

 Dùng lệnh run route stub.

3.8.2.2. Global Routing

Global routing tập trung xem xét và giải quyết về tình trạng tắc nghẽn các dây (congestion). Thông qua việc tạo các net segment và thực hiện đi các net segment trong bucket, global routing sẽ xem xét tình trạng liên kết bên trong bucket.

Net segment là đoạn dây ước lượng cho việc kết nối.

Bucket là mạng lưới được tạo ra cho mục đích đặt các cell và đi các đường dây liên kết. Kích thước mặc định của mỗi bucket là 10 track x 10 track. Với kích thước của track bằng với kích thước của effective routing pitch. Mỗi bucket có cùng kích thước với nhau.

Hình3.40 : Hệ thống các bucket

Có thể thực hiện global routing thông qua một trong hai lệnh sau được hỗ trợ trong Magma tool:

fix wire $m -option

run rout global $m -option

3.8.2.3. Track Routing

Track routing thực hiện đi các net segment liên thông giữa các bucket với nhau sao cho thỏa các luật của nhà sản xuất giữa các net segment và một số ràng buộc. Khi thực hiện đặt các net segment thỏa các luật, track routing đã giúp giảm hiện tượng crosstalk (nhiễu xuyên tâm), nhiễu giữa các dây.

Khi không đủ khoảng trống cho việc hình thành các kết nối bên trong, track router chất chồng các dây lên nhau. Nếu có quá nhiều dây chất chồng lên nhau thì detail routing sẽ gặp khó khăn khi đi các dây, có thể phát sinh lỗi và không thể sửa lỗi. Track routing biểu thị các chỗ dây nối chồng nhau bằng cách đánh dấu (marker) tại nơi đó. Khi marker được tập trung tại vùng nhỏ, ta dùng lệnh –marker_router và track_route để sửa lỗi.

Track routing cũng dùng track để xác định việc đi các dây.

Hình 3.41: Sau khi thực hiện track routing

Có thể thực hiện track routing thông qua một trong hai lệnh sau được hỗ trợ trong Magma tool:

fix wire $m -option

run route track $m -option

3.8.2.4. Detailed Routing

Detailed routing phân tích các net segment và chuyển các net segment thành các kết nối kim loại và via thực sự để liên kết các pin với nhau. Detailed routing cũng thực hiện việc kiểm tra các lỗi DRC/LVS.

Có thể thực hiện detailed routing thông qua một trong hai lệnh sau được hổ trợ trong Magma tool:

fix wire model_name option

run route final model_name option

Incremental detailed routing cố gắng thực hiện các liên kết thỏa các yêu cầu thiết kế và duy trì các liên kết này ngay cả khi còn lỗi spacing hoặc short. Những đường bị lỗi sẽ được đánh dấu marker.

Sau khi thực hiện incremental mode, detail router phân tích và kiểm tra lỗi. Detailed routing tập trung tìm và giải quyết các lỗi spacing và lỗi short. Detailed routing cũng cố gắng sữa các lỗi về hình học như là:diagnol width violation, island rule violation.

Sau khi detail router thực hiện sửa các lỗi nhưng vẫn còn lỗi thì ta cần sửa lỗi bằng tay hoặc thông qua lệnh run rout refine $m.

Kết quả của bước fix wire sẽ không còn lỗi DRC/LVS, antenna, cũng như thỏa các ràng buộc về thời gian. Sau đó ta tiến hành chuyển lên làm TopLevel.

3.9. Làm việc trên Top Level

Sau khi đã hoàn thành các block level ta sẽ tiến hành làm việc trên top level để tạo thành con chip hoàn chỉnh. Các bước trên top level cũng hoàn toàn giống như trên block level nhưng lúc này mỗi khối block sẽ được coi như những khối macro hoặc những memory. Dữ liệu liên quan từ block level sẽ được chuyển lên top level.

Có hai cách để làm việc trên Top level là: top down và bottom up.

Top down: Đây là cách thường áp dụng hơn, trong cách này người ta sẽ tiến hành thiết kế cho top trước, sau đó đặt các thông số, vị trí pin, port cho bock.

Bottom up: cách này ít áp dụng hơn, người ta sẽ tiến hành xây dựng các khối block trước, sau đó mới tiến hành làm trên top.

Trong đề tài nghiên cứu sử dụng cách làm việc Top Down.

Sau khi làm việc trên top level, ta phải sủa các lỗi DRC/LVS, antenna, cũng như kiểm tra thời gian xem có thỏa các yêu cầu thiết kế không, nếu không thỏa mãn thì ta phải tiến hành kiểm tra và sửa lỗi.

Kết sau khi làm việc trên top level dữ liệu cuối cùng sẽ được xuất ra dưới dạng file GDSII để đưa cho nhà sản xuất. Nhà sản xuất lúc này sẽ sản xuất ra một con chip cụ thể.

CHƯƠNG 4: THỰC HÀNH VÀ KẾT QUẢ

A. Thực hiện thiết kế vật lý trên Block

PCI_Bridge32

Một số đặc điểm của khối PCI-Bridge32 và BASoC:

- Standard cell khoảng: 70 000 cell

- Hard macro: 4

- Số lớp metal: từ M1 tới M7

- Điện thế hoạt động: 0.9V ~1.1V

- Số pin: 380 pin

4.1. Tối ưu hóa mức cao - Fix RTL

Trong bước này ta sẽ tiến hành nhập dữ liệu thiết kế, bao gồm các thư viện chuẩn của nhà sản xuất TSMC, nhập các ràng buộc cũng như các luật thiết kế, nhập các dữ liệu rtl của thiết kế file verilog.

Sử dụng thư viện: tsmc90g_7t2

Thư viện RAM: art_hsdp_256x40

Sau khi tiến hành nhập dữ liệu ta sẽ tiến hành tối ưu hóa thiết kế. Một số lệnh được sử dụng:

config rtl add_dc on

config rtl clockgate on –integrated config rtl sharing on

config sweep sequential off

Run rtl elaborate $TOP_MODULE –verbose

Kết quả của bước này sẽ được lưu vào thư mục volcanno, các file reports cũng được tạo ra, ta có thể kiểm tra các thông tin liên quan đến thiết kế bằng các đọc các file report này.

Hình 4.1: File report xuất ra sau bước Fix Rtl

4.2. Cấu trúc lại Netlist - Fix Netlist

Sau bước Fix Rtl ta chuyển sang bước Fix Netlist. Trong bước này ta sẽ chuyển đổi mã RTL đã được tối ưu ở bước Fix Rtl thành các SuperCell Models, sau đó tiến hành thiết lập các đường datapath và tối ưu hóa logic của mạch. Tạo ra một thiết kế duy nhất, sau đó khởi tạo kỹ thuật mapping. Bước này chỉ dùng khi dữ liệu đầu vào là file RTL. Trong bước này ta một số lệnh được sử dụng:

force undriven $m ${UNDRIVEN_TIE}

force gate opt_mode $m ${NETLIST_OPT_MODE} –hier check model $m

eval fix netlist $m $l ${fix_netlist_options}

4.3. Tối ưu hóa thời gian - Fix Time

Dữ liệu từ bước fix netlist được sử dụng để tiến hành bước fix Time thông qua lệnh

import volcano volcano/pci_bridge32.netlist.volcano

Ở bước Fix Time một số lệnh được sử dụng:

Tổng số cell Số Macro

force maintain $m –hier data flatten $m

check model $m

fix time $m $l –effort high –timing_effort high run gate trim $m $l –verbose

check model $m –print netlis_violation

Sau bước fix time kết quả sẽ sẽ lưu vào thư mục volcano để sử dụng cho bước tiếp theo.

Một phần của tài liệu thiết kế vật lý hệ thống trên vi mạch sử dụng công nghệ cmos 90nm tsmc (Trang 54 - 90)

Tải bản đầy đủ (DOC)

(90 trang)
w