Professional Documents
Culture Documents
123doc Vlsi BKHN Co Code Thiet Ke Khoi Tinh Toan Can Bac 2 PDF
123doc Vlsi BKHN Co Code Thiet Ke Khoi Tinh Toan Can Bac 2 PDF
123doc Vlsi BKHN Co Code Thiet Ke Khoi Tinh Toan Can Bac 2 PDF
6/2019
2
LỜI NÓI ĐẦU
Ngành thiết kế IC là một ngành có yếu tố quyết định sự phát triển của tất cả các
ngành khoa học khác. Công nghệ ASIC được sử dụng rộng khắp các thiết bị điều khiển tự
động để điều khiển các chức năng của các phương tiện truyền thông, xe cộ,các hệ thống
xử lý, dây chuyền công nghiệp… Nhận biết được tầm quan trọng của ngành thiết kế IC,
thông qua môn học “ Thiết kế VLSI” ,chúng em đã thực hiện đề tài “Thiết kế khối tính
toán căn bậc 2” sử dụng bộ công cụ phần mềm thiết kế IC chuyên nghiệp của Synopsys.
Chúng em xin chân thành cảm ơn Ts. Phan Xuân Vũ đã tận tình chỉ bảo và hướng
dẫn, cung cấp cho chúng em những điều kiện tốt nhất để thực hiện đề tài này.
3
Chương 1: Quy trình thiết kế ASIC sử dụng bộ phần mềm của
Synopsys
1.1 Tổng quan về công nghệ ASIC
ASIC - Application Specific Integrated Circuit: mạch thích hợp ứng dụng chuyên
biệt.
ASIC được xây dựng bằng việc kết nối các mạch có sẵn dã được xây dưgj theo các
phương pháp mới vì vậy ASIC thuận tiện và dễ dàng hơn. Asic là một mạch thích hợp
được sản xuất cho một ứng dụng đặc trưng và thường có kích thước tương đố nhỏ. Công
nghệ ASIC được sử dụng rộng khắp trong các thiết bị điều khiển tự động để điều khiển
các chức năng của các phương tiện truyền thông, xe cộ, các hệ thống xử lý, dây chuyền
công nghiệp…
1.1.1 Sơ lược quá trình phát triển của mạch thích hợp IC
SSI : Small Scale Intergation – Mạch tích hợp cỡ nhỏ (<10 transistors)
MSI: Medium Scale Integration – Mạch tích hợp cỡ trung bình (10÷100
transistors)
LSI: Large Scale Integration – Mạch tích hợp cỡ lớn (100÷1000 transistors)
VLSI: Very Large Scale Integration – Mạc tích hợp cỡ rất lớn (103÷106 transistors)
Channeled-gate arrayChanneless-
ASIC gate array ASIC SPLDs CPLDs FPGAs
Full-custom ASIC:
Một phần hoặc toàn bộ logic cell và các mạch hoặc nền (layout ) được thiết kế
riêng biệt cho từng ASIC. Không sử dụng thư viện cell có sẵn cho toàn bộ hoặc một phần
thiết kế.
Ưu điểm: tối ưu về diện tích, tăng hiệu suất làm việc của IC
Nhược điểm: giá thành cao, chiếm nhiều thời gian thiết kế cũng như chế tạo
Full-custom được dùng trong các trường hợp đòi hỏi khắt khe về tốc độ, tài
nguyên, diện tích và hiệu suất làm việc, hoặc khi Asic quá đặc biệt cần phải được thiết kế
tùy biến.
Semi-custom ASIC:
Sử dụng các thư viện chuẩn tế bào logic. Thư viện chuẩn bao gồm các đối tượng ,
mỗi đối tượng là môt tập hợp mô tả các chức năng logic, thông số vật lí (trễ, điện cảm,
điện dung, điện trở...) và các đặc tính hình học cần thiết cho việc tạo ra mặt nạ của một
phần tử cơ bản tạo thành IC được gọi là Standard Cell như các cổng AND, OR, XOR,
MUX, FF...Thư viện này được chuẩn hóa cho phép các công cụ thiết kế có thể đọc, rồi
biên dịch bản thiết kế thành một file mô tả chi tiết việc sử dụng các phân tử cơ bản trong
thư việc chuẩn gọi là file Netlist. Sau đó từ file Netlist người thiết kế chế tạo ra các mặt
nạ bằng cách sắp xếp các Standard cell và nối dây giữa chúng. Có thể sử dụng kết hợp tế
bào chuẩn với tế bào lớn đã được thế kế sẵn như vi điều khiển, vi xử lí… Người thiết kế
chỉ cần địn nghĩa vị trí của tế bào chuẩn và kết nối trong một ASIC. Tất cả các mặt nạ
được tùy biến và được thiết kế duy nhất cho từng khách hàng.
Ưu điểm: Tiết kiệm thời gian, giảm chi phí sản xuất và giảm rủi ro do sử dụng tế
bào chuẩn đã được thiết kế sẵn và kiểm tra trước .
Nhược điểm : mất thời gian chế tạo các lớp mặt nạ, không tối ưu về diện tích cũng
như hiệu suất.
Gate array:
Là ASIC được đúc sẵn bằng mảng các cổng hoặc các cell giống hết nhau nhưng
chưa từng được kết nối với nhau. Các cell này được đặt tại các vị trí được xác định trước.
Channeled-gate aray ASIC: Các kết nối và các mảng logic nằm trên cùng một lớp, các kết
nối tạo thành các kênh nằm giữa các mảng cổng logic.
Channeless-gate aray ASIC: Các kết nối nằm ở lớp, còn các mảng logic nằm ở lớp dưới.
Programmale Logic Device (PLDs):
PLD là các IC chuẩn .Tuy nhiên PLD có thể cấu hình hay lập trình để tạo nên một
bộ phận tùy biến cho các ứng dụng riêng biệt nên chúng cũng thuộc họ ASIC.
Đặc điểm: logic cell và các lớp mặt nạ không được tùy biến, thiết kế nhanh giá thành rẻ,
một khối đơn lẻ của kết nối có thể lập trình.
CPLD: Complex Programmable Logic Device.
SPLD: Simple Programmable Logic Device.
FPGA: Field Promgrammable Gate Array.
Quy trình thiết kế ASIC có thể được chia làm 2 phần vùng chính là front-end và
back end. Quá trình Front-end bao gồm các bước không phụ thuộc vào công nghệ chế
tạo. là quá trình để kiểm thử thiết kế. Quá trình back-end dựa trên công nghệ được sử
dụng. do đó tính sử dụng lại rất hạn chế.
RTL coding
Physical layout
Từ những đòi hỏi về chức năng và đặc tính, người thiết kế sẽ phác thảo kiến trúc
của ASIC cần thiết kế. Việc này đóng vài trò đặc biệt quan trọng trong việc quyết định
khả năng về hiệu suất của thiết kế (bao gồm mức tiêu thụ công suất, mức điện áp, những
giới hạn về timing…). Do đó, khi phác thảo kiến trúc phải xem xét tất cả các đòi hỏi về
điện áp , tốc độ và hiệu suất của thiết kế để đảm bảo rằng nó thỏa mãn tất cả những đặc tả
mong muốn. Trong quá trình mô phỏng, kiến trúc sẽ phải thay đổi nếu kết quả mô phỏng
cho thấy nó không đáp ứng những yêu cầu của Specification.
Khi kiến trúc đã đáp ứng được tất cả các yêu cầu, người thiết kế sẽ chi thiết hóa
các thiết kế trong kiến trúc đứa ra các “vi kiến trúc” cho từng module. Vi kiến trúc là cầu
nối giữa kiến trúc và mạch thực tế, nó “ánh xạ” những định nghĩa trong kiến trúc thành
những thiết kế có khả năng thực hiện được trong thực tế.
Quá trình tổng hợp cần hai tập tin đầu vào khác để thực hiện việc biến đổi RTL thành
cổng logic. Tập tin đầu vào đầu tiên mà công cụ tổng hợp phải có trước khi thực hiện
biến đổi là tập tin “ thư viện công nghệ”. Đó là tập tin thư viện chứa những cell chuẩn.
Trong quá trình tổng hợp chức năng logic của mã RTL được biến đổi thành những
cổng logic sử dụng những cell sẵn có trong tập tin thư viện công nghệ. Tập tin đầu vào
thứ hai là “ tập tin giới hạn” (constraints file) giúp quyết định việc tối ưu mạch logic tổng
hợp tập tin này thường chứa những thông tin về định thì, yêu cầu tải và thuật toán tối ưu
mà công cụ tổng hợp cần để tối ưu thiết kế thậm chí cả những nguyên tắc thiết kế cũng
được xem xét trong quá trình tổng hợp. Bước này là một bước rất quan trọng trong luồng
thiết kế ASIC. Bước này bảo đảm việc tổng hợp được tùy biến nhằm có được kết quả tối
ưu nhất có thể. Dựa vào bản tối ưu hóa cuối cùng, nếu những yêu cầu về hiệu suất hay tận
dụng diện tích vẫn không nằm trong khoảng cho phép người thiết kế phải xem xét lại từ
kiến trúc đến vi kiến trúc của thiết kế. Người thiết kế phải đánh giá lại kiến trúc cũng như
vi kiến trúc đã đáp ứng yêu cầu về diện tích và hiệu suất hay chưa? Nếu vẫn chưa đáp
ứng được thì việc định nghĩa lại kiến trúc hay vi kiến trúc là việc làm bắt buộc tuy nhiên
việc làm này sẽ dẫn đến việc phải bắt đầu lại từ đầu, một hành động tất mất thơi gian.
Thậm chí nếu việc thay đổi kiến trúc hay vi kiến trúc vẫn không mang lại kết quả mong
muốn thì việc phải nghĩ đến là sữa chưa specification.
APR cũng là bước liên qua đến việc tổng hợp clock tree. Đa số những công cụ
APR có thể thực hiện việc định tuyến clock tree với những thuật toán đặc biệt được xây
dựng sẵn. Đây là một phần quan trọng của luồng APR bởi vì việc xây dựng clock tree là
rất tiên quyết bởi nếu được định tuyến đúng sẽ tránh được hiện tượng sai lệch clock.
1.2.7 Fabication
Quá trình cuối cùng là đem mạch đã Layout đi in. File sau khi layout là GDSII
được gửi đến nhà sản xuất để sản xuất ra con chíp.
1.3 Bộ công cụ phần mềm EDA của Sysnopsys
Ngày nay, Synopsys bao gồm hơn 60 văn phòng bán hàng, hỗ trợ và trung tâm
R&D trên khắp thế giới; sử dụng khoảng 6,800 lao động có doanh thu đạt 1.54 tỷ USD
(năm 2011).
1.3.3 Leda
Là công cụ kiểm tra tính khả thi của mã RTL cho việc tổng hợp mạch, mô phỏng,
kiểm thử, sử dụng lại. Leda phát hiện những lỗi liên quan đến đồng bộ, cách ly… và nâng
cao hiệu năng của các công cụ khác, như VCS MX, DC, và Formality.
Đầu vào: Các file HDL có dạng đuôi .v, .sv, .vhd . . .
Đầu ra: Các cảnh báo và lỗi cho file HDL
Đầu vào: các tệp HDL (.v, .sv, .vhd . . .), thư viện của nhà sản xuất IC, tệp chứa
các thông số trễ (.sdf) (mô phỏng mức logic gate), dữ liệu mô phỏng (file .txt)
Đầu ra: kết quả mô phỏng (file đầu ra .txt, .doc; waveform ...), thông số
coverage…
Đầu vào: các tệp mã HDL (.v, .sv, .vhd . . .), thư viện của nhà sản xuất, các thông
số ràng buộc do người thiết kế đặt như thời gian, diện tích . . .
Đầu ra: file netlist (.v), file chứa thông số trễ (.sdf), file chứa thông số ràng buộc
(.sdc), file .ddc
1.3.6 Prime time
Là công cụ phân tích các thông số về mặt thời gian ở mức logic gate. Công cụ này
phân tích thời gian tĩnh, "bắt" các vi phạm về thời gian như setup time, hold time.. trước
và sau khi layout.
Đầu vào : file netlist sau khi tổng hợp logic hoặc vật lý, file .sdc
1.3.7 IC compiler
Là công cụ thực hiện tổng hợp ở mức vật lý, bao gồm layout (thực hiện việc sắp
xếp và tối ưu vị trí các khối, nối dây, bố trí đường đi của xung clock) và giải nén RC. IC
Compiler cho phép người thiết kế làm việc có hiệu quả cao khi thiết kế các khối phức tạp.
Đầu vào: netlist (.v) hoặc file .ddc, .sdc, .def, .spef, .sbpf
1.3.8 Fomality
Là công cụ kiểm tra tính tương đương, sử dụng kĩ thuật thống kê và hình thức hóa
để kiểm chứng xem chức năng của 2 bản thiết kế có tương đương nhau hay không (2 bản
thiết kế này ở 2 mức kế tiếp nhau, thường là đầu vào và đầu ra của một công cụ tổng
hợp). Formality cũng hỗ trợ kiểm thử các trạng thái năng lượng, các thiết kế có nhiều
mức điện áp.
Phương pháp lặp phổ biến nhất để tính căn bậc hai mà không dùng máy tính được biết
đến với tên gọi "phương pháp Babylon hay "phương pháp Heron" theo tên người đầu tiên mô
tả nó, triết gia người Hy Lạp Heron of Alexandria. Phương pháp này sử dụng sơ đồ lặp tương
tự phương pháp Newton–Raphson khi ứng dụng hàm số y = f(x)=x^2 – a. Thuật toán là sự
lặp lại một cách tính đơn giản mà kết quả sẽ ngày càng gần hơn với căn bậc hai thực mỗi lần
lặp lại. Nếu x ước tính lớn hơn căn bậc hai của một số thực không âm a thì a/x sẽ nhỏ hơn và
bởi vậy trung bình của hai số này sẽ là giá trị chính xác hơn bản thân mỗi số. Tuy nhiên, bất
đẳng thức AM-GM chỉ ra giá trị trung bình này luôn lớn hơn căn bậc hai thực, do đó nó sẽ
được dùng như một giá trị ước tính mới lớn hơn đáp số thực để lặp lại quá trình. Sự hội tụ là
hệ quả của việc các kết quả ước tính lớn và nhỏ hơn gần nhau hơn sau mỗi bước tính. Để
tìm x:
1. Khởi đầu với một giá trị x dương bất kỳ. Giá trị này càng gần căn bậc hai của a thì
càng cần ít bước lặp lại để đạt độ chính xác mong muốn.
2. Thay thế x bằng trung bình (x + a/x) / 2 của x và a/x.
3. Lặp lại bước 2, sử dụng giá trị trung bình này như giá trị mới của x.
Vậy, nếu x0 là đáp số phỏng đoán của √a và xn + 1 = (xn + a/xn) / 2 thì mỗi xn sẽ xấp xỉ
với √a hơn với n lớn hơn.
Áp dụng đồng nhất thức: √a = 2-n√4n a , việc tính căn bậc hai của một số dương có thể được
đơn giản hóa thành tính căn bậc hai của một số trong khoảng [1,4). Điều này giúp tìm giá trị
đầu cho phương pháp lặp gần hơn với đáp số chuẩn xác.
2.3. Mô phỏng trên ModelSim
chọn file topdm và ấn ok (các giao diện sẽ thay đổi để bắt đầu mô phỏng)
chọn trên thanh công cụ phần view → wave
• đánh số đầu vào muốn tìm căn bậc hai vào phần value→ ok
• ấn run nhiều lần cho đến khi biến Y có kết quả
2.4. Thực hiện theo công thức theo Synopsys
- Mở cửa sổ lệnh Terminal gõ lệnh sau:
C tcsh
source eda.csh
design_vision
Bước 2: Tạo file theo dõi quá trình có đuôi mở rộng “.svf”. Vào terminal gõ lệnh set_svf
top.svf
Bước 3: đọc file *.v File → Read Đọc tất cả các file verilog trong thư mục “rtl” trừ các
file testbench.
File → Analyze
File → Elaborate
Trong mục Design chọn file top module
Bước này kiểm tra các đầu vào thư viện để tổng hợp cho thiết kế đã đầy đủ chưa.
Bước 4: Thiết lập ràng buộc cho quá trình tổng hợp
- Vào Design → Check Design để kiểm tra thiết kế, đầu vào.
- Vào Design → Compile Design để tổng hợp trước khi thiết lập ràng buộc.
- Vào File → Save As. Chọn .ddc để lưu kết quả cho compile_clock.ddc
- Vào Design → Compile Ultra để tổng hợp sau khi thiết lập ràng buộc
- Vào File → Save As. Chọn .ddc để lưu kết quả cho compile_ultra_clock.ddc. Sau quá
trình tổng hợp khi xem lại sơ đồ mạch sẽ trở nên phức tạp hơn rất nhiều:
Có thể thấy rằng sau khi compile ultra thì mạch hoàn toàn là các standard cell nối với nhau
=> có thể xuất ra file netlist.
Bước 6: Phân tích thiết kế
write_sdc /home/lab/vlsi/clock.sdc
write_sdf /home/lab/vlsi/clock.sdf
Sau khi tổng hợp để kiểm tra xem thiết kế của mình có đáp ứng được các yêu cầu về
timing, công suất, diện tích,… hay không. Xuất ra các báo cáo để kiểm tra chất lượng quá
trình tổng hợp. Quan trọng nhất là kiểm tra về thời gian xem slack có dương trong từng
module không.
report_qor > /home/lab/vlsi/report_qor_default.txt
report_resources
report_constraint –all_violators
PHỤ LỤC
+ file topdm
module topdm(X,clk,Y);
input [63:0] X;
input clk;
output [31:0] Y;
wire [63:0] wx,wy,wx1,wy1;
bindm dm(.a(X),.x1(wx1),.y1(wy1),.clk(clk),.x(wx),.y(wy),.b(Y));
dmbin bin(.a(X),.x(wx),.y(wy),.clk(clk),.x1(wx1),.y1(wy1));
endmodule
+ file bindm
module bindm(a,x1,y1,clk,x,y,b); + file dmbin
input [63:0] a; module dmbin(a,x,y,clk,x1,y1);
input [63:0] x1,y1; input [63:0] a,x,y;
input clk; input clk;
output reg [63:0] x,y; output reg [63:0] x1,y1;
output reg [31:0] b;
reg [1:0] e; always @ (posedge clk)
begin
initial begin x1 = (x+y)/2;
x = a; y1 = (2*a)/(x+y);
y = 1; end
e = 1; endmodule
end
Report : timing
-path full
-delay max
-max_paths 1
-sort_by group
Design : topdm_1
Version: D-2010.03-SP5-2
Date : Sat Jun 22 08:39:46 2019
****************************************
Operating Conditions: BCCOM Library: tcbn45gsbwpbc
Wire Load Model Mode: segmented
Startpoint: dm/b_reg[0]
(rising edge-triggered flip-flop clocked by clk)
Endpoint: Y[0] (output port clocked by clk)
Path Group: clk
Path Type: max
Weighted
Group (min_delay/hold) Cost Weight Cost
-----------------------------------------------------
clk (no fix_hold) 0.00 1.00 0.00
default 0.00 1.00 0.00
-----------------------------------------------------
min_delay/hold 0.00
Constraint Cost
-----------------------------------------------------
max_transition 0.00 (MET)
max_capacitance 0.00 (MET)
max_delay/setup 1000000000.00
(VIOLATED)
critical_range 31999987712.00
(VIOLATED)
max_area 11858.85 (VIOLATED)
Chúng em đã hoàn thành thiết kế khối tính căn bậc 2. Kết quả mô phỏng sau khi
layout đáp ứng các yêu cầu chức năng và phi chức năng của specification đề ra.
Nội dung bài tập lớn dừng lại ở việc mô phỏng, chưa đưa ra được sản phẩm cụ thể. Để triển
khai được sản phẩm thật, cần nghiên cứu thêm những yếu tố khác.
Qua quá trình làm đề tài này, Chúng em đã hiểu thêm về công nghệ thiết kế ASIC,
luồng thiết kế, các bước thực hiện, được tiếp xúc với bộ công cụ phần mềm chuyên nghiệp
Synopsys, biết thêm về ngôn ngữ lập trình mô tả phần cứng verilog.
TÀI LIỆU THAM KHẢO
1. Verilog HDL by Samir Palnitkar.
2. ASIC Design Flow – Uvision.
3. Asic Design Flow Tutorial Using Synopsys Tools by Hima Bindu Komoru Hamid
Mahmoodi.
4. Tài liệu hướng dẫn của synopsys.