Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
VÕ MINH VINH
TỰ ĐỘNG HÓA VIỆC TẠO RA CÁC BỘ
TÍNH TOÁN SỐ HỌC TRONG VIỆC
PROTOTYPE VỚI CÔNG NGHỆ FPGA
Chuyên ngành KHOA HỌC MÁY TÍNH
LUẬN VĂN THẠC SĨ
TP. HỒ CHÍ MINH, tháng 11 năm 2008
2
CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Các bộ hướng dẫn khoa học : TS. ĐINH ĐỨC ANH VŨ / Đại học Bách
Khoa Tp.HCM
Cán bộ chấm nhận xét 1 : TS. TRẦN VĂN HOÀI / Khoa KH & KT Máy
tính, Đại học Bách Khoa Tp.HCM
Cán bộ chấm nhận xét 2 : TS. NGUYỄN VŨ LƯU / Giám đốc kỹ thuật Cty
TNHH ALTERA Việt Nam
Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN
THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 21 tháng 02 năm 2009
3
TRƯỜNG ĐẠI HỌC BÁCH KHOA
PHÒNG ĐÀO TẠO SĐH
------------------------------
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
ĐỘC LẬP – TỰ DO – HẠNH PHÚC
----------------------------------------
Tp. HCM, ngày
tháng
năm 2008
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: VÕ MINH VINH
Ngày, tháng, năm sinh: 21/08/1968
Chuyên ngành: Khoa Học Máy Tính
Phái: nam
Nơi sinh: Tp Hồ Chí Minh
MSHV: 00706732
I. TÊN ĐỀ TÀI:
Tự động hóa việc tạo ra các bộ tính toán số học trong việc prototype với
công nghệ FPGA
II. NHIỆM VỤ VÀ NỘI DUNG:
Xây dựng chương trình tạo ra các bộ tính toán số học (adder, substractor,
multiplier, divider) có cấu trúc, tham số và kích thước theo yêu cầu.
Module tạo ra sử dụng hiệu quả tài nguyên FPGA. Tham số đầu vào là kích
thước các toán hạng, cấu trúc bộ tính toán số học,... Module tạo ra có thể là
netlist hoặc Verilog code có khả năng tổng hợp để có thể tích hợp vào các EDA
tools.
III. NGÀY GIAO NHIỆM VỤ: 21/01/2008
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 30/11/2008
V. CÁN BỘ HƯỚNG DẪN: TS. ĐINH ĐỨC ANH VŨ
CÁN BỘ HƯỚNG DẪN
CN BỘ MÔN
QL CHUYÊN NGÀNH
Nội dung và đề cương luận văn thạc sĩ đã được Hội đồng chuyên ngành thông qua.
TRƯỞNG PHÒNG ĐT-SĐH
Ngày
tháng
năm 2008
TRƯỞNG KHOA QL NGÀNH
4
LỜI CẢM ƠN
Trước tiên tôi xin được bày tỏ lòng biết ơn sâu sắc về sự giúp đỡ của
TS. Đinh Đức Anh Vũ. Trong suốt quá trình nghiên cứu và thực hiện
luận văn, tôi luôn nhận được sự hướng dẫn tận tình của thầy.
Tôi xin chân thành cảm ơn các thầy cô trong Khoa Khoa Học và Kỹ
Thuật Máy Tính đã giảng dạy trong suốt khóa học cao học giúp tôi mở
rộng kiến thức và nâng cao trình độ chuyên môn.
Bên cạnh đó, tôi cảm ơn sự trợ giúp, động viên to lớn về mặt vật chất
cũng như tinh thần của gia đình, người thân, bạn bè và đồng nghiệp.
Thành Phố Hồ Chí Minh, tháng 11 năm 2008
Võ Minh Vinh
5
TÓM TẮT LUẬN VĂN THẠC SĨ
Mật độ và số lượng các cổng logic trong IC ngày càng cao và vượt qua mức độ khai
thác sử dụng chúng. Để có thể theo kịp, tận dụng được tốc độ phát triển của sự co
rút hình học ngày càng nhỏ của vi mạch và đẩy nhanh thiết kế, rút ngắn đáng kể
thời gian từ thiết kế ra thị trường của sản phẩm, giải pháp sử dụng FPGA cho
prototyping như là một giai đoạn quan trọng của phương pháp luận kiểm tra và thiết
kế vi mạch tự động ngày nay. Giải pháp này hiệu quả vì làm giảm các rủi ro do chi
phí phát triển thiết kế ngày càng tăng, giảm các rủi ro do đặc tính sản phẩm và sự
chấp nhận của thị trường.
Ngoài ra, các vật dụng, thiết bị quen thuộc hàng ngày có xu hướng được tích hợp
thêm các khả năng thông minh, hoặc tự điều khiển, xử lý (như là các thiết bị nghe
nhạc MP3). Các chip IC xử lý được lắp vào chúng và các bộ tính toán số học là
phần cốt lõi của các chip này.
Luận văn nghiên cứu phương pháp thiết kế prototype với công nghệ FPGA trong
thiết kế vi mạch tự động. Đó là phương pháp thiết kế vi mạch semicustom trên các
FPGA ở các bước thiết kế mô tả cấp cao, mô tả chức năng và thực hiện tổng hợp
cấp cao, tổng hợp logic, ánh xạ công nghệ và thiết kế vật lý trên FPGA.
Mục tiêu của đề tài là xây dựng chương trình tạo ra các bộ tính toán số học (adder,
substractor, multiplier, divider) có cấu trúc, tham số và kích thước theo yêu cầu.
Các module tạo ra phải đạt yêu cầu sử dụng hiệu quả tài nguyên FPGA. Tham số
đầu vào của chương trình là kích thước các toán hạng, cấu trúc bộ tính toán số
học,... Module tạo ra có thể là các đặc tả dạng netlist hoặc Verilog code mà có khả
năng tổng hợp để có thể tích hợp vào các EDA tools.
Các thiết kế do chương trình tạo ra được biên dịch (tổng hợp) thành mạch và giả lập
kiểm tra chức năng trên các FPGA.
Phương pháp chủ yếu bao gồm việc nghiên cứu và xây dựng một cách tự động các
đặc tả Verilog của các bộ tính toán số học mà xét đến nhiều kiểu cấu trúc khác nhau
và với nhiều tham số. Các cấu trúc này có hiệu suất cao, tận dụng tốt tài nguyên,
thời gian trễ thấp, độ mềm dẻo cao và sử dụng hợp lý các đặc trưng cấu trúc của các
FPGA.
Kết quả của luận văn rất có ý nghĩa cho những người thiết kế vi mạch. Nó giới
thiệu, trình bày một qui trình thiết kế vi mạch hiệu quả và sáng sủa hiện nay và các
thiết kế của bộ tính toán số học được tạo ra từ chương trình là có ý nghĩa thực tiễn.
Chúng có thể được sử dụng làm các mô đun cho các ứng dụng quan trọng khác. Các
bộ tính toán số học là bộ phận cốt lõi của các bộ vi xử lý.
6
MỤC LỤC
Mở đầu
10
1. Đặt vấn đề
2. Mục tiêu của đề tài
Những nghiên cứu lý thuyết
13
KIỂU THIẾT KẾ PROTOTYPE VỚI CÔNG NGHỆ FPGA 14
1. Qui trình thiết kế vi mạch
1.1 Các kỹ thuật bán dẫn, nguyên tắc phân loại mạch
1.2 Các sản phẩm IC
1.3 Vi mạch tích hợp chuyên dụng (ASIC)
1.4 Phân loại ASIC
1.5 Các loại thiết kế vi mạch & phương pháp luận thiết kế
1.6 Các pha trong việc chế tạo chip
1.7 Các bước thiết kế IC
1.8 Thiết kế full custom
1.9 Thiết kế ASIC
1.10 Tối ưu hoá mạch
1.11 Các mô hình mạch
1.12 Sự tổng hợp (synthesis)
2. Prototype với công nghệ FPGA
2.1 Giới thiệu FPGA
2.2 Các kỹ thuật FPGA
2.3 Tóm tắt FPGA và complex PLD
2.4 FPGA làm việc như thế nào
2.5 Rapid Prototyping với Verilog và FPGA
3. Tổng quan các công trình có liên quan
14
14
14
14
15
17
18
18
19
19
20
21
22
24
24
25
26
26
29
31
3.1 Sử dụng ASIC prototyping để giảm các rủi ro [Ou05]
31
3.1.1 Các phạm vi rủi ro
32
3.1.2 Các lợi thế của ASIC Prototyping với FPGA
32
3.1.3 Các trở ngại trong quá khứ và các tiến bộ lớn khắc phục được 33
3.1.4 Phương pháp ba pha cho prototyping
33
3.2 Số học trên FPGA [CCL04]
34
3.2.1 Các thiết kế các bộ số học trên FPGA
34
3.2.2 Field-Programmable Gate Array (FPGA)
35
3.3 Prototyping trên PC với phần cứng lập trình [ON97]
35
Bộ cộng 2k-block 16-bit trên FPGA
36
3.4 Thực hiện bộ cộng digit-serial trên XC4000 FPGA
37
3.4.1 Số học digit-serial (Digit-Serial Arithmetic)
37
3.4.2 Các thực hiện bộ cộng/trừ trên FPGA
37
7
CÁC BỘ TÍNH TOÁN SỐ HỌC
40
1. BỘ CỘNG / BỘ TRỪ
40
40
40
40
41
41
43
1.1 Ripple-carry
1.1.1 Bộ cộng bán phần (HA)
1.1.2 Bộ cộng toàn phần (FA)
1.1.3 Bộ cộng ripple-carry (RCA)
1.1.4 Delay trong mạch số
1.1.5 Condition và exception
1.1.6 Sự dò tìm đầy đủ carry (carry completion detection)
1.2 Carry-lookahead
1.2.1 Khai triển truy hồi carry (carry recurrence)
1.2.2 Carry-lookahead đa mức
1.2.3 Latency của bộ cộng carry-lookahead đa mức
1.3 Parallel Prefix Networks
1.3.1 Kết hợp các tín hiệu khối g và p
1.3.2 Prefix Computation
1.3.3 Lập công thức bài toán Prefix Computation
1.3.4 Alternative Parallel Prefix Networks
1.3.5 Cấu trúc đệ qui Brent-Kung
1.3.6 Brent-Kung carry network (8-bit adder)
1.3.7 Kogge-Stone carry network (16-bit adder)
1.3.8 Speed-Cost Tradeoff trong các carry network
1.3.9 Carry Network là cần thiết cho bộ cộng nhanh
1.4 Các biến thể trong các bộ cộng nhanh
1.4.1 Simple Carry-Skip
1.4.2 Carry-Skip đa mức
1.4.3 Carry-Select
1.3.4 Conditional Sum
1.5 Các thiết kế bộ cộng lai (hybrid adder)
1.5.1 Carry-lookahead và carry-select
1.5.2 Ripple-carry và carry-lookahead
1.6 Tối ưu hoá trong các bộ cộng nhanh
1.7 Phép cộng nhiều toán hạng
1.7.1 Thực hiện song song bằng bộ cộng cây
1.7.2 Bộ cộng carry-save
1.7.3 Phép cộng nhiều toán hạng sử dụng bộ cộng carry-save
1.7.4 Phép cộng nhiều toán hạng – Wallace tree và Dadda tree
1.7.5 Phép cộng nhiều số có dấu
1.8 Phép cộng trong hệ thống số bù 2 (nhắc lại)
1.8.1 Sự biểu diễn số bù 2
1.8.2 Phép cộng trong hệ thống số bù 2
44
45
45
46
47
48
48
48
49
49
50
50
51
51
52
52
52
54
54
56
57
57
58
58
59
59
60
60
60
62
62
62
63
8
1.8.3 Tại sao số bù 2 là lựa chọn phổ biến
1.8.4 Sự mở rộng phạm vi và độ chính xác trong số bù 2
2. BỘ NHÂN
2.1 Giải thuật nhân Shift/Add cơ số 2
2.2 Các bộ nhân phần cứng cơ bản
2.3 Phép nhân của các số có dấu
2.4 Giải thuật nhân Shift/Add cơ số r
2.5 BỘ NHÂN CÂY VÀ MẢNG
2.5.1 Bộ nhân cây toàn phần
2.5.2 Bộ nhân cây cho các số có dấu
2.5.3 Bộ nhân mảng
3. BỘ CHIA
3.1 Giải thuật chia shift/subtract
3.2 Bộ chia mảng
Trình bày, đánh giá, bàn luận các kết quả
1. Giới thiệu chương trình tạo các bộ tính toán số học
1.1 Chức năng chương trình
1.2 Các loại cấu trúc bộ cộng và bộ trừ
1.2.1 Các loại cấu trúc bộ cộng, bộ trừ và phạm vi kích thước
1.2.2 Giải thích các cổng và các tham số của bộ cộng, bộ trừ
1.3 Các loại cấu trúc bộ nhân và bộ chia
1.3.1 Các loại cấu trúc bộ nhân, bộ chia và phạm vi kích thước
1.3.2 Giải thích các cổng và các tham số của bộ nhân, bộ chia
1.4 Cơ chế hoạt động của chương trình tạo bộ tính toán số học
1.5 Chạy chương trình, giao diện và thao tác
2. Xây dựng view cấu trúc của các bộ tính toán số học
2.1 Bộ cộng cây nhiều toán hạng
2.2 Bộ nhân cây
2.3 Bộ nhân mảng
2.4 Các xây dựng phát triển của bộ cộng
3. Verilog code, RTL view của các bộ tính toán số học
3.1 Bộ cộng ripple-carry
3.2 Bộ cộng carry-lookahead
3.3 Bộ cộng Brent-Kung
3.4 Bộ cộng Kogge-Stone
3.5 Bộ cộng carry-skip
3.6 Bộ cộng carry-select
3.7 Bộ cộng conditional-sum
63
63
64
64
65
66
68
70
70
73
75
77
77
80
81
82
82
82
82
83
84
84
84
85
85
91
91
94
97
97
99
99
101
113
118
121
124
128
9
3.8 Bộ cộng Hybrid carry-lookahead / carry-select
3.9 Bộ cộng Hybrid ripple-carry / carry-lookahead
3.10 Bộ cộng cây 3 toán hạng không dấu
3.11 Bộ cộng cây 3 toán hạng có dấu bù 2
3.12 Bộ cộng cây 4/5/6/7 toán hạng không dấu
3.13. Bộ cộng/trừ với các thanh ghi
3.14. Bộ nhân mảng không dấu và có dấu bù 2
3.15. Bộ nhân cây 9x9 không dấu và có dấu bù 2
3.16. Bộ chia tuần tự (shift/subtract) không dấu restoring
3.17. Các mô đun trích từ Altera (phụ lục)
4. Giả lập kiểm tra chức năng với các FPGA
4.1 Bộ cộng hai toán hạng
4.2 Bộ cộng cây nhiều toán hạng
4.3 Bộ nhân cây và mảng
4.4 Bộ chia
5. Kết quả tiết kiệm tài nguyên khi dùng tham số FPGA
Kết luận và hướng phát triển
Danh mục tài liệu tham khảo
Phụ lục
1. Các họ FPGA của Altera Corporation
1.1 Cyclone III
1.1.1 Các đặc trưng thiết bị
1.1.2 Kiến trúc thiết bị
1.1.3 Các phần tử logic (Logic Element)
1.1.4 Các khối logic array
1.2 Stratix III
1.2.1 Các đặc trưng thiết bị
1.2.2 Các đặc trưng kiến trúc
1.2.3 Adaptive Logic Modules và các mode hoạt động của ALM
1.2.4 Các khối DSP
2. Ngôn ngữ mô tả phần cứng VERILOG HDL
2.1 Verilog là gì ?
2.2 Tại sao dùng Verilog HDL ?
2.3 Verilog HDL mô tả cấu trúc và hành vi của mạch
3. Giới thiệu Quartus II cho người sử dụng Verilog
3.1 Tạo mới một project
3.2 Setting window (cửa sổ cài đặt)
3.3 Biên dịch & tạo netlist view
3.4 Chạy giả lập (simulation)
130
134
141
143
144
148
149
154
159
161
164
164
166
167
168
168
169
171
173
174
174
174
174
175
178
180
180
180
183
187
189
189
190
191
192
193
195
196
196
10
MỞ ĐẦU
11
1. Đặt vấn đề
Thiết kế vi mạch tự động là một lãnh vực mới mẻ, phát triển nhanh chóng, nhiều
thách thức là mũi nhọn công nghệ cực kỳ chiến lược trong nền công nghiệp hiện
đại của thế giới. Sản phẩm IC có mặt trong hầu hết các vật dụng, thiết bị điện,
điện tử. Nó đóng vai trò chủ yếu trong sự phát triển công nghệ thông tin, truyền
thông, đo lường, điều khiển tự động, hàng không, giao thông vận tải,.... Ngày
nay, công nghệ mạch tích hợp ngày càng có những tiến bộ nhanh chóng trong
việc nâng cao tốc độ hoạt động và mật độ cổng logic của thiết bị. Độ tích hợp
ngày càng cao, tạo ra nhiều cơ hội mới để tích hợp nhiều tính năng hơn, mạnh
hơn, nhanh hơn vào trong thiết bị nhỏ hơn nhưng giá thành lại thấp hơn. Kích
thước thiết bị càng bé, hiệu suất hoạt động càng cao và năng lượng tiêu thụ càng
thấp.
Mật độ và số lượng các cổng logic trong IC ngày càng cao và vượt qua mức độ
khai thác sử dụng chúng. Để có thể theo kịp, tận dụng được tốc độ phát triển của
sự co rút hình học ngày càng nhỏ của vi mạch và đẩy nhanh thiết kế, rút ngắn
đáng kể thời gian từ thiết kế ra thị trường của sản phẩm, giải pháp sử dụng
FPGA cho prototyping như là một giai đoạn quan trọng của phương pháp luận
kiểm tra và thiết kế vi mạch tự động ngày nay. Giải pháp này hiệu quả vì làm
giảm các rủi ro do chi phí phát triển thiết kế ngày càng tăng, giảm các rủi ro do
đặc tính sản phẩm và sự chấp nhận của thị trường.
Luận văn nghiên cứu phương pháp thiết kế prototype với công nghệ FPGA trong
thiết kế vi mạch tự động. Đồng thời xây dựng chương trình tạo ra các thiết kế
của các bộ tính toán số học đang sử dụng hiện nay. Chương trình này phải đáp
ứng được trong một phạm vi rộng nhiều tham số đầu vào. Các thiết kế do
chương trình tạo ra sẽ được biên dịch thành mạch và giả lập kiểm tra chức năng
trên các FPGA. Phương pháp chủ yếu bao gồm việc nghiên cứu và xây dựng các
đặc tả Verilog của các bộ tính toán số học với nhiều cấu trúc khác nhau. Các cấu
trúc này có hiệu suất cao, tận dụng tốt tài nguyên, thời gian trễ thấp, độ mềm dẻo
cao và sử dụng hợp lý các đặc trưng cấu trúc của các FPGA.
Kết quả của luận văn rất có ý nghĩa cho những người thiết kế vi mạch. Vì nó
giới thiệu, trình bày một qui trình thiết kế vi mạch hiệu quả và sáng sủa hiện nay
và các thiết kế của bộ tính toán số học được tạo ra từ chương trình là có ý nghĩa
thực tiễn. Chúng có thể được sử dụng làm các mô đun cho các ứng dụng quan
trọng khác. Trong các bộ vi xử lý luôn xuất hiện các bộ tính toán số học.
2. Mục tiêu của đề tài
Mục tiêu của đề tài là xây dựng chương trình tạo ra các bộ tính toán số học
(adder, substractor, multiplier, divider) có cấu trúc, tham số và kích thước theo
yêu cầu.
12
Các module tạo ra phải đạt yêu cầu sử dụng hiệu quả tài nguyên FPGA. Tham số
đầu vào của chương trình là kích thước các toán hạng, cấu trúc bộ tính toán số
học,... Module tạo ra có thể là các đặc tả dạng netlist hoặc Verilog code mà có
khả năng tổng hợp để có thể tích hợp vào các EDA tools.
Các công việc chủ yếu cụ thể như sau :
- Nghiên cứu qui trình thiết kế phần cứng và phương pháp prototyping FPGA.
- Nghiên cứu và phân tích các cấu trúc của các bộ tính toán số học được sử
dụng hiện nay.
- Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL để đặc tả các module tạo
ra các bộ tính toán số học và ứng dụng hiệu quả tài nguyên của FPGA.
- Xây dựng chương trình tạo ra các thiết kế của các bộ tính toán số học dưới
dạng Verilog HDL code với nhiều tham số khác nhau.
- Sử dụng phần mềm QuartusII để prototyping các thiết kế vi mạch trên các
FPGA một cách mô phỏng (gồm các họ Cyclone, Stratix của Altera) để tạo
ra các sơ đồ netlist và chạy giả lập chức năng.
Các kiến thức cần thiết :
- Ngôn ngữ mô tả phần cứng Verilog HDL
- Phần mềm thiết kế phần cứng Quartus II trên các FPGA.
- Kiến trúc các họ FPGA của hãng Altera.
-oOo-
13
NHỮNG NGHIÊN CỨU LÝ THUYẾT
14
KIỂU THIẾT KẾ PROTOTYPE VỚI FPGA
1. QUI TRÌNH THIẾT KẾ VI MẠCH
1.1 Các kỹ thuật bán dẫn, nguyên tắc phân loại mạch
-
-
-
Các vi mạch điện tử khai thác các đặc tính của vật liệu bán dẫn. Quá trình
chế tạo rất phức tạp, sử dụng các loại vật liệu bán dẫn (Silicon, GalliumArsenide). Các họ kỹ thuật mạch chất nền silicon: CMOS (Complementary
Metal Oxide Semiconductor), Bipolar, BiCMOS.
Mạch điện tử phân ra thành mạch analog (tương tự) và mạch digital (số).
Mạch digital phân ra theo chế độ hoạt động: mạch đồng bộ và mạch không
đồng bộ.
Vi mạch tích hợp chuyên dụng ASIC (Application Specific Integrated
Circuits)
Kỹ thuật CAD đóng vai trò làm giảm thời gian thiết kế và tối ưu hoá chất
lượng mạch.
1.2 Các sản phẩm IC
-
Processor: CPU, DSP, Controller.
Memory chip: RAM, ROM, EEPROM.
Analog: dùng trong truyền thông di động, xử lý âm thanh và hình ảnh video.
Programmable (có thể lập trình): PLA, FPGA.
Embedded system (hệ thống nhúng): sử dụng trong xe hơi, network card.
System-on-chip (SoC) (cả hệ thống trên một chip)
1.3 Vi mạch tích hợp chuyên dụng (ASIC)
ASIC (application-specific integrated circuit), là một thuật ngữ chỉ các vi mạch
tích hợp chuyên dụng.
ASIC là một vi mạch được thiết kế dành cho một ứng dụng cụ thể. ASIC ngày
nay được ứng dụng hầu như khắp mọi nơi, ví dụ như vi xử lý của điện thoại di
động, hay chip xử lý trong các máy móc tự động, các phương tiện truyền thông,
xe cộ, tàu vũ trụ, các hệ thống xử lý, các dây chuyền công nghiệp...
Đối lập với ASIC là các vi mạch tích hợp cho mục đích chung như 7400 series
và 4000 series những vi mạch này có thể liên kết để tạo ra nhiều ứng dụng khác
nhau. Ngoài ra vì tính tương đối của việc phân loại theo mục đích sử dụng mà
còn có thêm khái niệm application specific standard product (ASSP) – thiết bị
chuẩn cho ứng dụng đặc biệt, chỉ đến những vi mạch nằm giữa hai khái niệm
ASIC và vi mạch tích hợp cho mục đích chung.
ASIC được chế tạo trên miếng silicon tròn, mỏng có nhiều lớp (10 ~ 15 lớp),
một nửa số lớp dùng cho việc xác định các transistor và các lớp còn lại xác định
việc đi dây giữa các transistor (interconnect).
15
1.4 Phân loại ASIC
Full custom ASIC : Bao gồm một số logic cell đặc chế (customized) và tất cả
mask layer đặc chế.
Công nghệ sản xuất ASIC đặc chế hoàn toàn bào hàm toàn bộ các quá trình
sản xuất IC, kể cả giai đoạn in khắc bán dẫn quang học (photo lithographic).
Ưu điểm của sản phẩm dạng này là tính tối ưu về diện tích, tăng hiệu suất
làm việc của IC, khả năng tích hợp với các thiết bị tương tự hay các phần tử
thiết kế sẵn khác. Bù lại thì quy trình thiết kế tốn nhiều thời gian, đòi hỏi đầu
tư cơ sở vật chất tốn kém cũng như nhân lực với kỹ năng cao.
Semi-custom ASIC : Tất cả logic cell được thiết kế sẵn (predesigned) và một số
mask layer đặc chế.
+ Cell library
Nếu như thư viện logic thường được nhà sản xuất bán dẫn cung cấp miễn
phí thì IP-core (intellectual property core) là các phần tử hoặc của nhà sản
xuất hoặc của bên thứ ba cung cấp mà người dùng phải trả tiền, các phần
thiết kế có thể tồn tại ở dạng “mềm” tức là chỉ có mã HDL mức cao, hay ở
dạng “cứng” tức là toàn bộ sơ đồ thiết kế chi tiết trên một thư viện cụ thể và
sẵn sàng đưa trực tiếp vào quá trình sản xuất bán dẫn.
Tương tự như phần mềm thì với phần cứng cũng xuất hiện cộng đồng mở,
là nơi xây dựng và phổ biến những IP-core miễn phí.
Ví dụ về IP-cores như nhân của bộ vi xử lý, USB module, Ethernet, RAM,
ROM…
+ Standard-cell-based ASIC
Thư viện phần tử logic chuẩn (standard cell library) là thư viện tất cả các
phần tử cơ bản tạo thành vi mạch như logic AND, OR, XOR… kèm theo
các thông số vật lý như thời gian trễ, điện cảm, điện dung… Thư viện này
được định dạng chuẩn cho phép các công cụ thiết kế có thể đọc, sau đó sẽ
biên dịch bản thiết kế ra dạng mô tả chi tiết sử dụng các phần tử của thư
viện chuẩn, gọi là netlist.
Vào cuối thập niên 1980 thì những phần mềm thiết kế dạng như design
compiler của Synopsys được đưa vào sử dụng. Sở dĩ có tên gọi compiler là
do phần mềm này làm việc về nguyên tắc không khác gì một trình biên dịch
thông thường trên máy tính, thay vì mã viết bằng C, Pascal... thì vi mạch
được viết bằng HDL, còn thư viện phần tử logic đóng vai trò như tập lệnh
của bộ vi xử lý.
+ Gate-array-based ASIC
Sử dụng mảng logic (gate array) là một phương pháp thiết kế IC. Ở đây
“gate” dùng như một đơn vị để đo khả năng chứa các phần tử logic của vi
mạch bán dẫn.
Một vi mạch dạng này cấu thành từ 2 ~ 5 lớp bán dẫn kim loại, các phần tử
logic được phân bố đều trên các lớp này. Ví dụ ma trận các phần tử OR,
16
AND PAL, PLA, hay trong FPGA là các khối logic lập trình được. Các
phần tử logic chưa được kết nối với nhau, quá trình thiết kế bản chất là lập
trình để kết nối giữa các phần tử logic.
Programmable ASIC : Tất cả logic cell được thiết kế sẵn và không có mask
layer đặc chế.
Vi mạch lập trình dùng mảng logic là một khái niệm rộng bao hàm các thiết
bị như PLA, PAL, CPLD, FPGA.
Ưu điểm của ASIC thiết kế theo kiểu này là chi phí sản xuất rẻ do vi mạch
sản xuất hàng loạt và có cấu trúc tương tự như nhau. Tính linh động của
thiết kế phụ thuộc vào loại mảng logic được sử dụng. Ví dụ vi mạch lập
trình dùng PROM chỉ được lập trình một lần duy nhất trong khi với vi mạch
dùng công nghệ EEROM hay FPGA thì có thể lập trình lại, FPGA còn cho
phép người thiết kế lập trình lại mà không cần công cụ đặc biệt nào.
+ Programmable logic device (PLD)
+ Field-programmable gate array (FPGA)
17
1.5 Các loại thiết kế vi mạch & phương pháp luận thiết kế
Custom (đặc chế)
- Thiết kế chức năng và vật lý bằng thủ công, yêu cầu nỗ lực cao của đội thiết kế
tối ưu hoá mỗi nét chi tiết của mạch.
- Sự nỗ lực thiết kế và giá cao.
- Chất lượng mạch cao.
Semicustom (bán đặc chế)
- Hạn chế các nguyên mẫu (primitive) mạch ở một số giới hạn, do đó giảm khả
năng tinh chỉnh tất cả các bộ phận của thiết kế mạch. Sự hạn chế này cho phép
người thiết kế tạo đòn bẩy từ các nguyên mẫu có thiết kế tốt, đặc tính tốt và tập
trung vào các kết nối giữa chúng.
- Dễ dàng phát triển các công cụ CAD cho thiết kế và tối ưu hoá cũng như giảm
thời gian thiết kế.
- Chất lượng giảm đi rất ít so với custom.
Các phương pháp thiết kế semicustom
- Cell-based : Thiết kế dựa trên các cell.
o Standard cell : Các cell thực hiện chức năng cơ bản, ví dụ: and, or, flip
flop,...
o Macro cell : Các cell mang tính tổng quát được tạo ra tự động, ví dụ: chương
trình tạo ra tự động cổng AND n ngõ nhập.
- Array-based : Thiết kế dựa trên các array (mảng).
Prediffused : Chế tạo từ các wafer có sẵn site, chỉ nối kim loại giữa các site.
Prewired : FPGA (Field Programmable Gate Array).
LUT (Look up table) có nhiều chức năng cơ bản, lập trình để xác định
chức năng, kết nối các LUT. Dây có sẵn, dùng phần mềm để thiết kế
thành mạch, file.bin đưa vào LUT.
Có thể lập trình lại nhiều lần.
Thích hợp với nghiệp dư hoặc các ứng dụng đặc thù.
Hiệu suất FPGA không cao (do đi dây sẵn). Lập trình để kết nối phải đi
theo các con đường có sẵn (thời gian truyền dẫn lâu)
Hiện nay FPGA chứa rất nhiều cổng, dung lượng rất lớn, hiệu suất cao.
18
Ví dụ thiết kế full custom (đặc chế hoàn toàn)
1.6 Các pha trong việc chế tạo chip
Gồm có các pha thiết kế, kiểm tra, sản xuất và đóng gói
1.7 Các bước thiết kế IC
19
Thieát keá vaät lyù
AÙnh xaï coâng ngheä
Phöông trình
ngoõ vaøo, ngoõ xuaát
Ñoùng goùi
Toång hôïp logic
Toång hôïp caáp cao
1.8 Thiết kế full custom
-
RTL Description (register-transfer-level) : Mức mô tả các thanh ghi và sự di
chuyển các vectơ thông tin giữa các thanh ghi.
Sắp xếp lại và đi dây : Ràng buộc tối ưu về diện tích và latency.
Saép xeáp laïi vaø ñi daây
1.9 Thiết kế ASIC
-
HDL Programming (lập trình mô tả phần cứng)
Cell library : Thư viện các môđun đã làm sẵn (định nghĩa tốt, đã kiểm tra),
đẩy nhanh thời gian thiết kế, tập trung chất lượng các kết nối.
20
Saép xeáp laïi vaø ñi daây
Thö vieän cheá taïo saün
1.10 Tối ưu hoá mạch
Thường được kết hợp với tổng hợp.
Đòi hỏi sự chọn lọc số các lựa chọn riêng biệt trong mô hình đã cho, với mục
tiêu nâng cao một hay nhiều yếu tố các phẩm chất của thiết kế. Gồm có :
+ Hiệu suất
Thời gian yêu cầu xử lý một số thông tin.
Số lượng thông tin có thể được xử lý trong khoảng thời gian cho trước.
Hiệu suất của mạch được tính toán nhờ vào sự phân tích kiến trúc và
hành vi của mạch. Hiệu suất của mạch logic tổ hợp được đo bằng thời
gian trễ lan truyền giữa input và output (propagation delay), dựa vào
critical path. Hiệu suất của mạch tuần tự đồng bộ được đo bằng chu kỳ
của nó (thời gian của clock nhanh nhất mà có thể áp dụng vào mạch).
Đối với mô hình mức kiến trúc của mạch với sự thực hiện tuần tự đồng
bộ, hiệu suất được đo bằng latency (thời gian yêu cầu cho thực thi các
tác vụ). Tích số của thời gian chu kỳ và latency xác định toàn bộ thời
gian thực thi. Trong việc thực thi pipeline của mạch đồng bộ, việc đo
hiệu suất là tốc độ mà dữ liệu được sinh ra và được dùng hết
(throughput của mạch). Trong một mạch không pipeline, throughput
thì nhỏ hơn (hoặc bằng) nghịch đảo của tích số thời gian chu kỳ và
latency.
+ Diện tích
Diện tích được đo bằng tổng số các diện tích mạch thành phần.
Các mạch nhỏ hơn, nhiều mạch hơn trên một wafer nên chi phí sản xuất
thấp hơn.
- Xem thêm -