ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA VẬT LÝ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Đề tài :
NGHIÊN CỨU PHƯƠNG PHÁP THIẾT KẾ
VI MẠCH TÍCH HỢP HƯỚNG ỨNG DỤNG
Giảng viên hướng dẫn : ThS Lê Đức Hùng
KS Trần Quốc Hân
KS Hoàng Ngọc Vũ
Sinh viên thực hiện : Trần Trung Hiếu
MSSV : 0213078
TP HỒ CHÍ MINH 07/2006
LỜI CẢM ƠN
Trong suốt bốn năm học ở giảng đường của Đại Học Khoa Học Tự Nhiên
( ĐHQG TP.HCM ) là khoảng thời gian quý báu, giúp em tích lũy kiến thức và
kinh nghiệm trong quá trình học tập nhằm giúp ích cho công việc của em sau
này.
Để đạt được kết quả như ngày hôm nay :
Con xin gửi lời cảm ơn đến Ba Mẹ và những người thân trong gia đình đã
luôn động viên, khuyến khích để con có thể vượt qua những khó khăn, thử thách
trong suốt quá trình học tập.
Em xin chân thành tri ân các Thầy Cô trong bộ môn Điện Tử - Viễn
Thông đã tận tình chỉ dạy và hướng dẫn em trong suốt quá trình học tập và thực
hiện đề tài.
Em xin gửi lời cảm ơn sâu sắc đến Thầy Lê Đức Hùng, người đã nhiệt
tình hướng dẫn, chỉ bảo em trong suốt quá trình thực hiện luận văn tốt nghiệp.
Em xin chân thành cảm ơn anh Hoàng Ngọc Vũ, anh Nguyễn Quyết
MỤC LỤC
SVTH : Trần Trung Hiếu
Chương 1 – Quy trình thiết kế SoC
CHƯƠNG 1 : QUY TRÌNH THIẾT KẾ SoC
( SoC FLOW )
System on chip ( SoC ) là tổ hợp của nhiều thiết kế cho phép chạy ứng
dụng trên một Chip đơn duy nhất. SoC trở thành một trong những nhánh quan
trọng trong ngành công nghiệp bán dẫn những năm gần đây cho phép thiết kế có
mức độ tích hợp đạt đến hàng triệu cổng logic. Quy trình thiết kế SoC gồm hai
giai đoạn thiết kế : giai đoạn thiết kế Front End và giai đoạn thiết kế Back End.
Giai đoạn thiết kế Front End thực hiện việc xây dựng thiết kế về mặt luận
lý như viết mã, mô phỏng kiểm tra, thiết đặt các ràng buộc, phân tích thời gian
v.v
Giai đoạn thiết kế Back End thực hiện việc chuyển mô tả thiết kế từ mặt
luận lý ở giai đoạn thiết kế Front End sang mô tả vật lý thiết kế bằng cách đặt các
Cell, đi dây kết nối các Cell, kiểm tra thời gian thực v.v…
SVTH : Trần Trung Hiếu
1
Chương 1 – Quy trình thiết kế SoC
Hình 1.1 – Quy trình thiết kế SoC
SVTH : Trần Trung Hiếu
Functional Specification
Functional Specification
Define Architecture
Define Architecture
RTL Coding
RTL Coding
Dynamic Verification
Dynamic Verification
Synthesis & Scan Insertion
Timing
Check
Timing
Pass
Fail
2
Chương 1 – Quy trình thiết kế SoC
1.1 GIAI ĐOẠN THIẾT KẾ FRONT END
1.1.1 Functional Specification
Chip ra đời xuất phát từ những ứng dụng thực tế, người thiết kế từ mục
đích của ứng dụng và ý tưởng phải phác thảo ra bảng mô tả chi tiết thông số kỹ
thuật cũng như những tính năng mà thiết kế cần đạt được. Bảng thông số kỹ thuật
cho biết những đặc điểm của thiết kế như tần số hoạt động, điều kiện điện áp,
nhiệt độ và các mối quan hệ định thời trong thiết kế.
1.1.2 Define Architecture
Từ bảng mô tả chi tiết thông số kỹ thuật của thiết kế, người thiết kế sẽ phác
họa sơ đồ khối cho thiết kế bao gồm nhiều khối Logic kết nối với nhau, mỗi khối
Logic thực hiện một chức năng nhất định trong thiết kế.
Hình 1.2 – Functional Specification và Define Architecture
1.1.3 RTL Coding
Sau khi có sơ đồ khối của thiết kế với các khối Logic kết nối với nhau,
người thiết kế sẽ tiến hành viết mã RTL cho từng khối Logic đó. Viết mã RTL là
giai đoạn quan trọng, viết mã RTL ngoài việc đảm bảo đúng chức năng Logic còn
phải thỏa mãn phần cứng yêu cầu trong thiết kế ( Flip Flop, Latch, Mux … ).
SVTH : Trần Trung Hiếu
Sơ đồ khối luận lý
Sơ đồ khối luận lý
Thông số vật lý
Thông số vật lý
Functional
Testbench
Testbench
Report, Waveform
Report, Waveform
RTL Simulation
RTL Simulation
4
Chương 1 – Quy trình thiết kế SoC
sẽ cố gắng tối ưu để thỏa các điều kiện ràng buộc. Phần mềm của Synopsys
thường được sử dụng là Design Compiler ( viết tắt là DC ).
Những thiết kế ngày nay bao gồm cả thiết kế cho việc kiểm tra lỗi Silicon
của quá trình sản xuất, kỹ thuật này gọi là Design For Test ( DFT ). Một trong
những phương pháp của kỹ thuật DFT là Scan Insertion, phương pháp này sẽ tạo
nên trong thiết kế những cấu trúc dùng riêng cho việc kiểm tra lỗi Silicon.
Hình 1.4 – Synthesis and Scan Insertion
1.1.6 STA ( Static Timing Analysis )
Thiết kế sau khi được Synthesis phải đảm bảo đúng về mặt chức năng, thỏa
mãn các thông số vật lý và phải hoạt động ở một tốc độ nhất định, đây chính là tốc
độ yêu cầu của thiết kế.
STA là giai đoạn phân tích về mặt thời gian của thiết kế sau khi Synthesis,
phần mềm sử dụng là Prime Time cho phép phân tích độ trì hoãn qua các đường
truyền tín hiệu trong thiết kế. Kết quả phân tích sẽ là các báo cáo, người thiết kế
dựa vào các bảng báo cáo này để xem tốc độ hoạt động của thiết kế có đạt yêu cầu
hay không. Trong thực tế quá trình STA được lặp đi lặp lại nhiều lần với Synthesis
cho đến khi các yêu cầu về thời gian của thiết kế được thỏa mãn.
SVTH : Trần Trung Hiếu
Synthesis and Scan Insertion
Mô tả RTL
Mô tả RTL
Thư viện Cell
SVTH : Trần Trung Hiếu
RTL
RTL
Gate Level Netlist
Gate Level Netlist
Report
Report
Formal Verification
Formal Verification
6
Chương 1 – Quy trình thiết kế SoC
năng và thời gian. Nếu không có lỗi, xuất dữ liệu ra dưới dạng file gds2. Nếu có
lỗi, kiểm tra lại việc đặt các Cell và kết nối dây.
1.2.2 Tape-out
Kiểm tra lại tất cả các báo cáo sau quá trình Place and Route trước khi đưa
đi sản xuất.
SVTH : Trần Trung Hiếu
7
Chương 2 – Viết mã RTL
CHƯƠNG 2 : VIẾT MÃ RTL ( RTL CODING )
2.1 KHÁI NIỆM RTL CODING
Viết mã RTL có nghĩa là dùng ngôn ngữ mô tả phần cứng Verilog hay
VHDL để mô tả chi tiết specification của thiết kế. Một mô tả RTL sẽ mô tả các
thông tin chuyển đổi Logic giữa các thanh ghi với nhau.
Trong quá khứ, giai đoạn này được thực hiện một cách thủ công bằng cách
vẽ lược đồ kỹ thuật ( Schematic ). Phương pháp này mất rất nhiều thời gian và
công sức nhất là đối với những thiết kế phức tạp khi mà số cổng Logic có thể lên
đến hàng triệu cổng.
Ngôn ngữ mô tả phần cứng phát triển giúp cho việc thiết kế Chip nhẹ nhàng
hơn, nó có thể mô tả được các cấu trúc kỹ thuật của Chip cần thiết kế. Trình biên
Hình 2.2 – Latch với cách viết if
Cấu trúc Latch cũng có thể được tạo ra từ cách viết case với các điều kiện
không đầy đủ.
`define spring 2’b00
`define summer 2’b01
`define winter 2’b10
reg [1:0] season;
reg weather;
SVTH : Trần Trung Hiếu
9
Chương 2 – Viết mã RTL
case ( season )
spring : weather = warm;
summer : weathet = hot;
winter : weather = cold;
endcase;
Cách viết case trên chỉ bao gồm 3 trong 4 trường hợp về season. Để tránh
tạo ra cấu trúc Latch có thể dùng full_case ta sẽ thêm một giá trị default cho
trường hợp còn lại.
Hình 2.3 – Latch với cách viết case
2.3.2 CÁCH VIẾT DẪN ĐẾN CẤU TRÚC FLIP FLOP
HDL Compiler sẽ dẫn đến D Flip Flop khi trong khối always có thuật ngữ
edge, để diễn tả cạnh lên ( posedge clk ) hay cạnh xuống ( negedge clk ) của xung
Clock.
Sử dụng khối always để dẫn đến cấu trúc Flip Flop :
always @ ( edge )
begin
……
end
SVTH : Trần Trung Hiếu
* Cấu trúc If phải được thực hiện liền kề ngay sau khối always.
Ví dụ sau cho thấy điều đó và khi biên dịch chương trình sẽ báo lỗi.
always @ ( posedge clk or posedge reset )
begin
#1;
if ( reset )
. . .
end
2.3.3 CÁCH VIẾT DẪN ĐẾN CẤU TRÚC MUX
Để dẫn đến cấu trúc Multiplexer ta sử dụng cách viết case với các điều kiện
đầy đủ.
SVTH : Trần Trung Hiếu
12
Chương 2 – Viết mã RTL
Hình 2.6 – Multiplexer
always @ ( SEL or A or B or C or D )
begin
case ( SEL )
2’b00 : OUT <= A;
2’b01 : OUT <= B;
2’b10 : OUT <= C;
2’b11 : OUT <= D;
endcase
end
SVTH : Trần Trung Hiếu
13
Chương 2 – Viết mã RTL
Hình 2.7 – Cấu trúc Multiplexer được tạo ra
module decoder ( in, out );
input [2:0] in;
output [7:0] out;
reg [7:0] out;
always @ ( in )
begin
case ( in )
3’d0 : out[0] = 1’b1;
3’d1 : out[1] = 1’b1;
3’d2 : out[2] = 1’b1;
3’d3 : out[3] = 1’b1;
3’d4 : out[4] = 1’b1;
3’d5 : out[5] = 1’b1;
3’d6 : out[6] = 1’b1;
3’d7 : out[7] = 1’b1;
endcase
end
endmodule
SVTH : Trần Trung Hiếu
15
Chương 2 – Viết mã RTL
Hình 2.9 – Cấu trúc Decoder được tạo ra dùng Verilog
Cách viết tạo ra Decoder dùng RTL Coding :
module decoder ( in, out );
input [2:0] in;
output [7:0] out;
reg [7:0] out;
always @ ( in )
begin
out = 0;
ra hay không, sau đó công cụ Tổng hợp Logic sẽ tạo ra Netlist, là thiết kế ở mức
cấu trúc, chỉ chứa những tham chiếu đến các Logic Cell. Không có một chuẩn
chung nào cho việc tạo ra Netlist nhưng EDIF ( Electronic Design Interchange
Format – một dạng Format của Netlist ) thường được dùng rộng rãi. Sau quá trình
Tổng hợp, thiết kế sẽ được mô phỏng lại và kết quả của quá trình mô phỏng sẽ
được so sánh với kết quả mô phỏng của thiết kế hành vi.
Mỗi thiết kế đều có các yêu cầu về thông số, chức năng của thiết kế
( specification ). Phương pháp Tổng hợp Logic sẽ dựa vào RTL Coding đã được
SVTH : Trần Trung Hiếu
18
Chương 3 – Phương pháp Tổng hợp Logic
viết, các điều kiện ràng buộc của thiết kế ( constraints ) và thư viện chứa các Logic
Cell ( And, Or … ) để tạo ra Gate-level Netlist.
Các điều kiện ràng buộc cho thiết kế có thể chia thành hai phần chính :
• Ràng buộc về tốc độ : đảm bảo sao cho thiết kế hoạt
động đúng chức năng ở tốc độ càng nhanh càng tốt.
• Ràng buộc về diện tích : đảm bảo cho thiết kế chiếm
diện tích càng nhỏ càng tốt.
Phương pháp Tổng hợp Logic là kết hợp giữa các phần :
- Chuyển từ RTL Coding sang cấp Gate-level
( translation ).
- Tối ưu hóa thiết kế ( optimization ).
- Vẽ thiết kế ( mapping ).
Synthesis = Translation + Optimization + Mapping
Hình 3.1 – Định nghĩa quá trình Synthesis
Quá trình tối ưu thiết kế và đi dây dựa vào hai điều kiện ràng buộc quan
trọng ở trên và ràng buộc về tốc độ được đặt lên hàng đầu.
SVTH : Trần Trung Hiếu
19
Chương 3 – Phương pháp Tổng hợp Logic
Compile Design
Compile Design
Gate-level Netlist
Gate-level Netlist
Cell
Library
21