1. Trang chủ
  2. » Giáo Dục - Đào Tạo

môn thiết kế vi mạch số và lõi ip chủ đề tìm hiểu về thư viện số và ứng dụng

25 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

2 - Bộ công cụ FreePDK45 là bộ công cụ thiết kế quy trình nguồn mở - Nó không tương ứng với bất kỳ quy trình thực tế nào và không thể chế tạo được - Cho phép các nhà nghiên cứu và sinh v

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA ĐIỆN TỬ – VIỄN THÔNG BỘ MÔN ĐIỆN TỬ

-o0o -

MÔN: THIẾT KẾ VI MẠCH SỐ VÀ LÕI IP

CHỦ ĐỀ: TÌM HIỂU VỀ THƯ VIỆN SỐ VÀ ỨNG DỤNG

Giảng viên hướng dẫn: ThS Bùi An Đông Họ tên sinh viên:

Lê Vĩnh Phú – 20200306 Trần Huỳnh Tuấn – 20200407 Trương Công Trường – 20200391

TP Hồ Chí Minh, tháng 12 năm 2023

Trang 2

1

MỤC LỤC

I GIỚI THIỆU CHUNG VỀ THƯ VIỆN 2

II PHÂN TÍCH CHI TIẾT THƯ VIỆN 3

TÀI LIỆU THAM KHẢO 23

BÁO CÁO KỸ NĂNG 24

Trang 3

2

- Bộ công cụ FreePDK45 là bộ công cụ thiết kế quy trình nguồn mở

- Nó không tương ứng với bất kỳ quy trình thực tế nào và không thể chế tạo được - Cho phép các nhà nghiên cứu và sinh viên thử nghiệm thiết kế trong một nút công

nghệ hiện đại mà không cần các bản cam kết về bản quyền hoặc trả tiền cho giấy phép

- Cho phép sử dụng trên các bộ công cụ thiết kế (ví dụ: Cadence Virtuoso) để thiết kế cả mạch analog và digital

- Các flie có trong thư viện:

II PHÂN TÍCH CHI TIẾT THƯ VIỆN 1 File “adk.tcl”

Đây là một script TCL (Tool Command Language) được sử dụng để cấu hình môi trường thiết kế ASIC (Application-Specific Integrated Circuit) Nó đặt ra các biến quan trọng để xác định quy trình công nghệ, lớp định tuyến, lớp lưới nguồn điện, loại cell dẫn đầu, giá trị điện dung tải trung bình, và nhiều tham số khác liên quan đến thiết kế chip Tập tin cũng cung cấp hỗ trợ cho các công cụ mã nguồn mở và xác định các danh sách cell cần được loại trừ trong quá trình mô phỏng và kiểm tra

Một số mô tả tiêu biểu:

set ADK_PROCESS 45: Xác định quy trình công nghệ ASIC sử dụng, ở đây là 45nm set ADK_DRIVING_CELL "INV_X2": Chọn loại cell dẫn đầu sẽ được sử dụng trong mô phỏng và thiết kế

// Cổng logic được chọn cần phản ánh độ trễ và hiệu suất tương đương với những cổng logic thực tế mà chip sẽ sử dụng Điều này giúp đảm bảo rằng mô phỏng sẽ phản ánh chính xác hành vi của chip thực tế khi được triển khai

Trang 4

3

set ADK_TYPICAL_ON_CHIP_LOAD 7 : Đặt giá trị điện dung tải trung bình trên chip (7 pF), nó có thể được sử dụng để định rõ độ trễ dự kiến của các cổng và mạch logic trên chip khi chúng phải đối mặt với điện dung tải trung bình này

set ADK_TIE_CELLS \ "LOGIC1_X1 \

LOGIC0_X1"

Xác định các cell được sử dụng để kết nối với nguồn và đất

LOGIC1_X1: Đây có thể là một cell logic đơn giản (ví dụ: NAND hoặc NOR) được thiết kế để tạo ra tín hiệu logic "1" (hoặc VDD) khi được kích thích

LOGIC0_X1: Tương tự, đây có thể là một cell logic đơn giản được thiết kế để tạo ra tín hiệu logic "0" (hoặc VSS/đất) khi được kích thích

2 File “calibre.layerprops”

Chứa thông tin về các lớp (layer) trong quy trình layout

Trích xuất một dòng tiêu biểu trong file mô tả: 10 green speckle contact 1 1

10: Số hiệu lớp, được sử dụng để định danh lớp trong quy trình sản xuất chip Trong trường hợp này, lớp này được đặt là 10

green: Màu của speckle cho lớp này Trong trường hợp này, màu được chọn là xanh lá cây

speckle: Chỉ ra rằng lớp này chứa speckle, tức là có sự chèn thêm các điểm nhỏ (đốm) vào

contact: Loại của lớp Ở đây, lớp này được mô tả là "contact"

1: Độ dày của lớp, được đặt là 1 Thông thường, độ dày được đo bằng đơn vị micromet hoặc nanomet, tùy thuộc vào quy trình sản xuất chip cụ thể

1: Giá trị khác, có thể đại diện cho một thuộc tính khác của lớp hoặc quy trình, nhưng không có thông tin cụ thể nào được cung cấp trong dòng này

Trang 5

4 4 Databook của thư viện

▪ Chọn một cell đại diện có trong thư viện để nghiên cứu

- Databook Build Date: Ngày xây dựng Databook,

- Copyright: Bản quyền © 2004-2010 của công ty Nangate Inc.,

- Conditions for Characterization Library: Điều kiện cho thư viện đặc tính, bao gồm góc (corner) "NangateOpenCellLibrary_typical_typical" với các thông số:

- Vdd (điện áp nguồn): 1.10V - Tj (nhiệt độ chói): 25.0 độ C

- Output Transition Definition (Định Nghĩa Chuyển Đổi Đầu Ra): Chuyển động đầu ra được xác định từ 30% đến 70% (tăng) và từ 70% đến 30% (giảm) của điện áp đầu ra

- Propagation Delay Measurement (Đo Độ Trễ Truyền):

- Đo độ trễ truyền từ 50% (tăng đầu vào) hoặc 50% (giảm đầu vào) đến 50% (tăng đầu ra) hoặc 50% (giảm đầu ra)

▪ Block diagram của D Flip Flop

Trang 6

5 ▪ Các thông tin cơ bản về Flip Flop D

Bảng dưới cho ta một số thông tin cơ bản về FlipFlip: Đây là một flipflop hoạt động khi có cạch dương Clk, có diện tích cell là 4.522um2, có input là D, output là Q và QN

- Description: "Pos edge" là viết tắt của "Positive edge", có nghĩa là Flip-Flop này

hoạt động khi có cạnh dương của tín hiệu xung Clock

- Cell Area 4.522 um²: Diện tích của Flip-Flop D trên chip là 4.522 (um²) Đây là

thông số quan trọng để đánh giá mức độ chiếm diện tích của Flip-Flop trên chip

- Equation (Phương trình): Đây là phương trình logic mô tả của tín hiệu - Q = "(D)": Q được tạo ra từ tín hiệu D

- QN = "(!(D))":QN được tạo ra từ tín hiệu D đảo

- Type: Sequential: Loại Flip-Flop là Sequential, có nghĩa là nó lưu trữ thông tin và hoạt động dựa trên xung Clock

- Input D: Flipflop này có đầu vào là D - Output Q, QN: Có đầu ra là Q và QN

- PG Pins (Power/Ground Pins): Các Pin cung cấp nguồn cho flipflip là VDD và VSS

Trang 7

6 ▪ Bảng trạng thái

▪ Các thông số về độ trễ

- Input Transition [ns]: thời gian mà tín hiệu mất để chuyển từ mức logic thấp sang

mức logic cao hoặc ngược lại tại đầu vào của flip-flop

- Load Capacitance [fF] (điện dung tải): có vai trò quan trọng trong việc xác định

độ trễ lan truyền (propagation delay) của flip-flop Khi flip-flop chuyển trạng thái (từ mức logic thấp sang mức logic cao hoặc ngược lại), nó phải "nạp" hoặc "xả" một lượng điện tích tương ứng với dung lượng tải, dung lượng tải càng lớn, độ trễ lan truyền thường càng tăng, do cần phải chuyển điện tích lớn hơn khi tín hiệu

chuyển động qua mạch

- Clock_to_Q Propagation Delay

Clock-to-Q Time: Thời gian sớm nhất sau khi clock đến flipflop hoặc latch mà dữ liệu đúng xuất hiện ở ngõ ra

Trang 8

7 ▪ Các thông số khác

- Ràng buộc về thời gian

Setup Time: Thời gian tối thiểu dữ liệu phải “ổn định” trước khi xuất hiện clock để chốt (latch) hay flipflop chuyển mạch

Hold Time: Thời gian tối thiểu mà dữ liệu phải giữ trạng thái sau khi clock đến để chốt (latch) hay flipflop chuyển mạch đúng

- Capacitance (Dung lượng đầu vào): Là dung lượng mà đầu vào của flip-flop

phải vượt qua khi tín hiệu đầu vào chuyển đổi từ mức thấp sang mức cao hoặc ngược lại Dung lượng này bao gồm dung lượng của các transistor và các thành

phần khác trong mạch đầu vào

Trang 9

8

- Leakage power (Công suất rò rỉ): Mức công suất tiêu tốn khi mạch đang ở trạng

thái chờ đợi hoặc không hoạt động Điều này thường là kết quả của dòng điện "rò rỉ" thông qua các transistor khi chúng ở trong trạng thái tắt

// * NTC Setup

// * Export NTC sections : true // * Combine setup / hold : true // * Combine recovery/removal: true //

Trang 10

9 Extras:

- Export \celldefine: Thiết lập để không xuất (false) celldefinetrong mã nguồn Verilog.celldefine` thường được sử dụng để xác định một lớp bảng mô tả và có thể ảnh hưởng đến quá trình mô phỏng và tổ hợp mã nguồn

- Export \timescale: Thiết lập để không xuất (false) timescaletrong mã nguồn Verilog.timescale` thường được sử dụng để xác định đơn vị thời gian trong mô hình và mô phỏng

▪ Code verilog mô tả các module

- Trích xuất code verilog mô tả về một Flipflop D module DFF_X1 (D, CK, Q, QN);

input D; input CK; output Q; output QN; reg NOTIFIER; `ifdef NTC

\seq_DFF_X1 (IQ, nextstate, CK_d, NOTIFIER); not(IQN, IQ);

buf(Q, IQ); buf(QN, IQN); buf(nextstate, D_d); `else

\seq_DFF_X1 (IQ, nextstate, CK, NOTIFIER); not(IQN, IQ);

buf(Q, IQ); buf(QN, IQN); buf(nextstate, D); `endif

specify

(posedge CK => (Q +: D)) = (0.1, 0.1); (posedge CK => (QN -: D)) = (0.1, 0.1); `ifdef NTC

Trang 11

10

$setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER, , ,CK_d, D_d); $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER, , ,CK_d, D_d); $width(negedge CK, 0.1, 0, NOTIFIER);

$width(posedge CK, 0.1, 0, NOTIFIER); `else

$setuphold(posedge CK, negedge D, 0.1, 0.1, NOTIFIER); $setuphold(posedge CK, posedge D, 0.1, 0.1, NOTIFIER); $width(negedge CK, 0.1, 0, NOTIFIER);

$width(posedge CK, 0.1, 0, NOTIFIER); `endif

endspecify endmodule

- Phân tích đoạn code trên

Đoạn code mô tả một mô-đun Verilog là "DFF_X1" đại diện cho một Flip-Flop D lớp x1 Dưới đây là mô tả tổng quát về các khối chính trong đoạn mã:

Input và Output:

input D: Đầu vào dữ liệu (Data) của Flip-Flop input CK: Đầu vào xung clock (Clock)

output Q: Đầu ra dữ liệu của Flip-Flop

output QN: Đầu ra đảo của dữ liệu (inverted output) Internal Reg:

reg NOTIFIER:

Biến đăng ký (register) để đánh dấu sự thay đổi trạng thái của Flip-Flop

Conditional Compilation (`ifdef NTC):

Sử dụng ifdef để kiểm soát việc sử dụng quy tắc NTC (Nangate Library Characterizer) Dựa vào điều kiện, các tín hiệu được đưa vào mạch flip-flop được chọn từ D hoặc D_d, CK hoặc CK_d

Sequential Element (`\seq_DFF_X1):

Sử dụng một mô-đun hoặc mô-đun ngược để triển khai phần logic chính của Flip-Flop D

Trang 12

11 Logic Gates (not, buf):

not(IQN, IQ): Tạo ra đầu ra đảo QN từ đầu ra Q buf(Q, IQ): Đảm bảo Q giữ giá trị của IQ

buf(QN, IQN): Đảm bảo QN giữ giá trị của IQN

buf(nextstate, D_d): Đảm bảo nextstate giữ giá trị của D_d hoặc D tùy thuộc vào việc sử dụng NTC hay không

Specify Block (`specify):

Xác định thời gian và điều kiện về thời gian cho Flip-Flop Sử dụng $setuphold để đặt giới hạn về thời gian setup và hold Sử dụng $width để đặt giới hạn về chiều rộng dữ liệu

Tóm lại, mô-đun "DFF_X1" này chứa một Flip-Flop D lớp x1, có thể được điều chỉnh sử dụng quy tắc NTC Các thời gian đặc tả và điều kiện về thời gian cũng được xác định trong khối specify

- Chạy code trên tool

6 File “stdcells.lib”

▪ Standard cell - Level attributes

* Spice engine : Nanspice v2011.01-HR04-2011-01-19-1102050200 * Liberty export type : conditional

*

* Characterization Corner : typical * Process : TypTyp

Trang 13

12

* Temperature : 25C * Voltage : 1.1V *

****************************************************************************/ library (NangateOpenCellLibrary) {

library_features (report_delay_calculation,report_power_calculation); /* Units Attributes */

time_unit : "1ns";

leakage_power_unit : "1nW"; voltage_unit : "1V"; current_unit : "1mA"; pulling_resistance_unit : "1kohm"; capacitive_load_unit (1,ff);

▪ Standard cell – Điều kiện hoạt động (Operating Conditions)

/* Operation Conditions */

nom_process : 1.00; nom_temperature : 25.00; nom_voltage : 1.10; voltage_map (VDD,1.10);

Trang 14

tree_type : balanced_tree;

- operating_conditions (typical)

Điều kiện hoạt động: Biến thiên của công nghệ, Biến thiên của điện thế, Biến thiên

của nhiệt độ

Typical case: transitor N nhanh, transitor P chậm, điện thế và nhiệt độ trung bình

hay transitor N chậm, transitor P nhanh, điện thế và nhiệt độ trung bình - process_corner : "TypTyp";

Điện thế hoạt động của thiết kế thuộc loại : balanced_tree

▪ Standard cell – Thuộc tính của Cell trong tập tin lib

default_operating_conditions : typical; /* Threshold Definitions */

slew_lower_threshold_pct_fall : 30.00 ; slew_lower_threshold_pct_rise : 30.00 ; slew_upper_threshold_pct_fall : 70.00 ; slew_upper_threshold_pct_rise : 70.00 ; slew_derate_from_library : 1.00 ; input_threshold_pct_fall : 50.00 ; input_threshold_pct_rise : 50.00 ;

Trang 15

14

output_threshold_pct_fall : 50.00 ; output_threshold_pct_rise : 50.00 ; default_leakage_power_density : 0.00 ; default_cell_leakage_power : 0.00 ; /* Default Pin Attributes */

default_inout_pin_cap : 1.000000; default_input_pin_cap : 1.000000; default_output_pin_cap : 0.000000; default_fanout_load : 1.000000;

default_max_transition : 0.198535; define(drive_strength, cell, float);

wire_load xác định mối tương quan giữa fanout với chiều dài dây và ước lượng để tính

toán sự ảnh hưởng khi place và route dây,dựa trên chiều dài dây dẫn kết nối pin với pin

Fanout của transistor và chiều dài dây kết nối quyết định tốc độ chuyển mạch

Trong thư viện có nhiều wire_load, chọn wire_load("1K_hvratio_1_4") để nghiên cứu /* Wire load tables */

wire_load("1K_hvratio_1_4") {

capacitance : 1.774000e-01; // điện trở trên một đơn vị chiều dài resistance : 3.571429e-03; // điện dung trên một đơn vị chiều dài slope : 5.000000; // được dùng để nội suy tuyến tính

fanout_length( 1, 1.3207 ); // số fanout: 1, wire length: 1.3207 fanout_length( 2, 2.9813 );

fanout_length( 3, 5.1135 ); fanout_length( 4, 7.6639 ); fanout_length( 5, 10.0334 ); fanout_length( 6, 12.2296 ); fanout_length( 8, 19.3185 ); }

Ví dụ về tính: pin-to-pin RC delays

capacitance net = 1.774000e-01 x 1.3207

Trang 16

15 resistance net = 3.571429e-03 x 1.3207

/******************************************************************************************

Module : DFF_X1

Cell Description : Pos.edge D-Flip-Flop with drive strength X1

*******************************************************************************************/

cell (DFF_X1) {

drive_strength : 1; ff ("IQ" , "IQN") {

next_state : "D"; clocked_on : "CK"; }

area : 4.522000; pg_pin(VDD) {

voltage_name : VDD;

pg_type : primary_power; }

pg_pin(VSS) {

voltage_name : VSS;

pg_type : primary_ground; }

cell_leakage_power : 79.112308; leakage_power () {

when : "!CK & !D & !Q & QN"; value : 73.812310;

}

leakage_power () {

when : "!CK & !D & Q & !QN";

Trang 17

16

value : 77.650980; }

direction : input; // xác định chiều của Pin

related_power_pin : "VDD"; // có liên quan đến chân VDD related_ground_pin : "VSS";

capacitance : 1.140290; // Xác định tải ngõ vào khi nối vào mạch fall_capacitance : 1.062342;

rise_capacitance : 1.140290; timing () {

Trang 18

17

related_pin : "CK"; timing_type : hold_rising; fall_constraint(Hold_3_3) {

index_1 ("0.00117378,0.0449324,0.198535"); index_2 ("0.00117378,0.0449324,0.198535"); values ("0.001650,0.010970,0.010626", \ "0.004131,0.010748,0.006379", \ "0.143222,0.153005,0.144764");

// (Lookup table) Mô hình độ trễ không tuyến tính của CMOS được qui định một hoặc 2 chiều phụ thuộc vào sự chuyển mạch ở ngõ vào và tụ ngõ ra

// Pin D là ma trận 2 chiều 3X3

// index 1: data transitions – tọa độ dọc

// index 2: clock transitiion – tọa độ ngang, với index 1 và 2 → giá trị delay }

rise_constraint(Hold_3_3) {

index_1 ("0.00117378,0.0449324,0.198535"); index_2 ("0.00117378,0.0449324,0.198535"); values ("0.003805,0.015977,0.020421", \ "0.016803,0.029868,0.034184", \ "0.098513,0.113992,0.121949"); }

} timing () {

related_pin : "CK";

timing_type : setup_rising; fall_constraint(Setup_3_3) {

index_1 ("0.00117378,0.0449324,0.198535"); index_2 ("0.00117378,0.0449324,0.198535"); values ("0.036831,0.022224,0.015916", \ "0.054595,0.039810,0.033507", \ "0.100487,0.085013,0.077078"); }

rise_constraint(Setup_3_3) {

index_1 ("0.00117378,0.0449324,0.198535"); index_2 ("0.00117378,0.0449324,0.198535");

Ngày đăng: 04/07/2024, 20:06

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w