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

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 59 - 83)

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. Ta có thể kiểm tra kết quả bằng các lệnh trên mantle hoặc đọc trong file report.

Hình 4.2: File report sau khi fix netlist

4.4. Sắp xếp các module và thiết lập các đường power - Floorplan & Power Routing

Trước khi thực hiện sắp xếp các khối module và đi các đường power ta thực hiện thiết lập các thông số cho top và module. Dùng lệnh set để thiết lập các thông số. Sau đó ta mới thực hiện floorplanning và power routing.

Thiết lập các thông tin về blockage như: loại blockage (placement blockage, routing blockage), block trên những lớp nào.

Khai báo dạng net power và dạng port đi kèm với net power, loại power. Bảng sau cho ta biết sự tương quan giữa net power và port, loại power

Thiết lập các thông số cho các net power của power core ring : loại power (Vdd, Vss, Vddcore), lớp để đi các đường power net này, hướng của net, chiều rộng (width) của net, khoảng cách giữa hai net (offset).

Thiết lập các thông tin cho các đường power cho macro và module : loại power, loại net power, port, lớp metal thực hiện, chiều rộng, khoảng các giữa hai đường power.

Thiết lập các thông số cho memory trong module như là vị trí của mem trong module, hướng (NORTH, FLIP SOUTH), tên của memory…

Floorplanning

Thiết lập các thông số cho pin, pad. Tạo pad ring thông qua pad cell, filler cell, corner cell. Việc xác định vị trí, sắp xếp thứ tự các pad cell,filler cell, corner cell để tạo thành vòng ring liên tục thực hiện bằng lệnh force plan pad, force location cell, force keep, run plan create padring.

Tạo các đường power cho core power ring dựa vào thông số đã thiết lập và dùng lệnh force plan net, force route power2 ring, run rout power2 ring. Các net power dùng trên lớp metal2 (có hướng vertical), và lớp metal3 (có hướng horizonal).

Thiết lập các thông số cho module : lowerleft, width, height của module, clearance, các loại standard cell đặc biệt (pinPat, cellPat, ffPat, doPat), chiều cao cell row, khoảng cách giữa các row (trong thiết kế là 0u), lớp metal dùng để routing (từ m1 đến m4), giá trị nhỏ nhất bề rộng của dây bắt đầu thực hiện slot, dạng blockage mà module dùng...Ta dùng lệnh data create flooplan, force floorplan parameter để tạo floorplan cho model với các thông số vừa thiết lập. Bước tiếp theo là ta sắp xếp các khối module vào core. Tuy việc sắp xếp có thể thực hiện tự động bằng tool. Nhưng công việc sẽ không hiệu quả bằng ta sắp xếp bằng tay trên GUI. Bởi vì dựa vào dây flyline ta sẽ biết được khối module nào liên hệ nhau, cần đặt gần nhau.

Power routing

Power routing thực hiện kết nối các đường power cho memory, module và tạo các đường power rail.

Việc tạo các pin tap để kết nối giữa các pin power của module với đường power mesh được thực hiện tự động bằng lệnh run route power2 pin. Đồng thời đưa luật đi các đường power không được bẻ cong. Tức là các đường pin tap tạo ra phải đi vuông góc khi kết nối với power net. Thực thi luật này thông qua lệnh force route power2 pin_tapping_skip_bend .

Dùng lệnh run rout power2 rail để tạo các đường power rail trong từng khối module và trong vùng core. Các đường power rail sẽ kết nối với các đường power mesh thông qua các via.

Sau đó thực hiện slot metal những power net có bề rộng lớn hơn 35u thông qua lệnh

run route power2 slot.

Thực hiện làm tốt lại (refine) các đường power vừa tạo ra thông qua lệnh run rout power2 post_route_refine.

Sau khi thực hiện xong floorplanning và power routing cần kiểm tra lỗi DRC/LVS. Việc kiểm tra này nhằm mục đích xem có power net nào bị spacing, short, có bị lỗi power open không (các pin power chưa được nối với power mesh).

Kết quả output sẽ là file report và volcano được sử dụng cho bước tiếp theo. Sau đây là một số kết quả thu được sau khi thực hiện floorplanning và power routing.

Macro

Hình 4.3: File report sau bước floorplan và power routing

Hình 4.5: Các đường power sau bước Power routing

4.5. Sắp xếp lại các standard cell - Fix Cell

Sau khi tiến hành bước floorplan and power routing ta tiếp tục sắp xếp các standard cell vào vị trí.

Trong bước này các super cell model sẽ được chuyển thành các standard cell thực. Các bước tiến hành trong fix cell:

Global plament: Magma sẽ sắp xếp các standard cell vào các vị trí trên core có thể đặt được cell. Sau đó giải quyết các vấn đề về dày đặc (congestion), về sự chồng lấp của các cell, giảm nhỏ nhất chiều dài dây kết nối giữa các cell.

Logic optimization: tới đây Magma sẽ tối ưu thiết kế các vấn đề liên quan tới logic, thiết lập các clock-gatting cloning, đặt các buffer, điều chỉnh thông số gain, thay đổi kích thước cell, thay đổi cấu trúc logic giữa các cell nhằm tối ưu hóa về timing và diện tích.

Detail Placment: tạo các vị trí đặt cell một cách “hợp lệ”. Lúc này các cell đã được đặt trên cell row. Đặt trên các grip, không bị chồng lấp lên các cell khác, không đặt trong các blockage hoặc đặt trên các wire.

Mục đích của bước này là đặt các cell vào các vị trí phù hợp, không bị dày đặc

Run place global $m –option Run place coarse $m – option Run place detail $m –option

Ngoài ra ta có thể sử dụng lệnh

Fix cell $m –option với các tùy chọn để thay thế toàn bộ các lệnh phía trên. Dữ liệu cuối cùng cũng là các report và volcano để sử dụng cho bước sau.

Hình 4.6: Các Standard cell đã được sắp xếp

Hình 4.7: File report sau khi fix cell

4.6. Thiết lập hệ thống đường Clock - Fix Clock

Mục đích của bước này là thực hiện xây dựng và tối ưu hệ thống clock, làm giảm nhỏ nhất clock skew và độ trễ đưa vào. Hệ thống clock vừa tạo ra 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ế. Các đường clock được đặt trên layer M5 của thiết kế. Chúng ta 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 bước chính trong fix clock:

Phân tích các ràng buộc (constraint)

Xây dựng cấu trúc ban đầu cho hệ thống đường xung clock sử dụng lệnh

Thay đổi kích thước các buffer trên hệ thống đường xung clock để tối ưu hệ thống xung clock của thiết kế, thỏa mãn vấn đề về timing và skew.

Các lệnh chính trong bước fix clock:

Force plan clock $m –option

Config clock auto_skew_balance on Run route clock $m –option

Hình 4.8: Hệ thống các đường clock

4.7. Đi các đường tín hiệu, clock và đường power còn lại - Fix Wire

Bước cuối cùng khi thực hiện thiết kế trên block level là Fix Wire. Ở bước này ta thực hiện đi các đường tín hiệu, các đường clock còn lại trong khối module. Đồng thời bước Fix Wire cũng thực hiện tránh các lỗi antenna, tối ưu về thời gian và diện tích dây. Các bước tiến hành.

Stub routing: nối những wire rất ngắn trên layer M1. M1 là layer ở dưới cùng chỉ có các standar cell.

Global routing: giải quyết các vấn đề tắc nghẽn dây và các vấn đề về timing, routing một cách sơ bộ, tạo các segment sử dụng các các bucket.

Track routing: khởi tạo việc đi dây để dùng cho bước detail routing, gán những segment vào những vị trí hợp pháp, xác định vị trí của segment trong không gian, giải quyết các vấn đề về sắp xếp, nhiễu xuyên tâm giữa các wire và timing.

Detail routing: phân tích những segment sau đó chuyển chúng thành các wire, via thực sự. Điều chỉnh sao cho phù hợp với luật thiết kế.

Các lệnh chính được sử dụng trong bước này:

Run route stub $m –option Run route global $m –option Run route track $m –option Run route final $m –option. Run route refine $m –option.

Sau khi Fix Wire ta phải tiến hành kiểm tra và sửa lỗi DRC/LVS cũng như các lỗi liên

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 59 - 83)

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

(90 trang)
w