Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG


======o0o======

BÁO CÁO BÀI TẬP LỚN


THIẾT KẾ VLSI
Đề Tài : Thiết Kế Khối Tính Toán Căn Bậc 2
Giảng viên hướng dẫn: TS. Phan Xuân Vũ

Sinh Viên MSSV

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)

1.1.2 Phân loại ASIC


ASIC

Gate Array Full-Custom ASIC Semi-custom ASIC


Programmable Logic Device (PLDs)

Channeled-gate arrayChanneless-
ASIC gate array ASIC SPLDs CPLDs FPGAs

Hình 1: Sơ đồ phân loại ASIC

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.

1.2 Quy trình thiết kế ASIC

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ế.

Sơ đồ khối tổng quát:

Design specification FAB

Behavioral description Layout verification and Implementation

RTL coding
Physical layout

Functional verification and testing Floor planning, place and route

Logic synthesis Logic verification and testing

Front end Back end

Gate level netlist


Hình 2: Sơ đồ khơi tổng quát quá trình thiết kế ASIC
1.2.1 Specification
Đây là bước đầu tiên của luồng thiết kế ASIC và là phần quan trọng nhất của
luồng thiết kế ASIC. Trong bước này, đặc tính và chức năng của ASIC được định nghĩa,
đồng thời người thiết kế sẽ lập kế hoạch thiết kế của mình(liên quan tới thời gian hoàn
thành dự án, chi phí…).

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ế.

1.2.2 Mã hóa RTL (RTL coding)


Mã hóa RTL là bước thứ hai trong luồng thiết kế ASIC. Trong bước này, các “vi
kiến trúc” được mô tả dưới dạng mã RTL theo một ngô ngữ mô tả phần cứng nhất định.
Mã RTL này phải đảm bảo có thể tổng hợp logic và vật lý thành mạch thực tế được. Do
đó, việc mã hóa RTL phải tuần theo một bộ các quy tắc, các quy tắc này thường phụ
thuộc vào khả năng hỗ trợ của nhà sản xuất và phần cứng được lựa chọn để thực thi thiết
kế. vì thế, so với việc mã hóa RTL cho FPGA, mã hóa RTL cho công nghệ ASIC có nhiều
điểm khác biệt.
1.2.3 Logic synthesis
Bước tiếp theo trong luồng thiết kế ASIC là tổng hợp. Trong bước này, mã RTL
được tổng hợp. Đây là quá trình mà trong đó mã RTL được biến đổi thành cổng logic.
Cổng logic được tổng hợp sẽ có cùng chức năng giống như đã được mô tả trong RTL.

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.

1.2.4 Logic verification and testing


Bước tiếp theo trong quá trinh là kiểm tra quá trình tổng hợp. ở bước này , dầu ta
của quá trình tổng hợp logic ở trên được đưa vào để kiểm tra tính đúng đắn về chức năng
so với mô tả chức năng của thiết kế đã đề ra ở bước thứ nhất.
Ngoài việc kiểm tra về chức năng bước này còn có thể bao gồm cả quá trình kiểm
tra timing của mạch sau khi tổng hợp. Bất kì vi phạm nào về mặt thời gian như setup time
hay hold time đều cần được người thiết kế sửa chữa. Trong một số thiết kế người ta có thể
bỏ qua việc kiểm tra timing này do trong quá trình Layout sẽ cần có một quá trình kiểm
tra timing nữa.

1.2.5 Physical layout


Trong bước này, những cổng logic đã được tổng hợp sẽ được sắp xếp và nối dây.
Đa số thiết kế có những critical path rất chặt về mặt timing. Những đường này có thể
được xác định bửi những người thiết kế bằng đường có mức ửu tiên cao. Công cụ tự động
sắp xếp và nối dây sẽ nối những đường có mức ưu tiên cao trước nhằm đạt đến việc định
tuyến tối ưu.

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.6 Layout verification and implementation


Bước này kiểm tra độ chính xác về chức năng của mạch đã layout so với mạch sau
khi tổng hợp mức cổng. Trong bước này còn cần kiểm tra một số luật của nhà sản xuất đề
ra trong thư viện chuẩn (DRC). Nếu chưa đạt yêu cầu thì quay lại các bước trước đó để
kiểm tra và thực hiện lại

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

1.3.1 Sơ lược về công ty Synopsys


Synopsys là một trong những công ty lớn nhất trong lĩnh vực sản xuất EDA.
Synopsys được thành lập bởi Dr. Aart J. de Geus, David Gregory và một nhóm kỹ sư đến
từ General Electric's Microelectronics Center, Research Triangle Park (bắc Carolina).
Hướng phát triển ban đầu của Synopsys là tập trung vào phát triển các sản phẩm thương
mại phục vụ cho việc tổng hợp logic, bởi vậy, có thể nói sản phẩm nổi tiếng nhất của
Synopsys là phần mềm "Design compiler". Tuy nhiên, Synopsys cũng cung cấp các phần
mềm khác phục vụ hầu hết các công đoạn trong quy trình thiết kế IC, tập hợp thành bộ
Synopsys Tools.

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).

Hình 3: Trụ sở của Synopsys (Mountain View, California, US)


1.3.2 Sơ đồ khối tổng quát
Hình 4 : Công cụ thiết kế Synopsys theo luồng ASIC

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

Hình 5: Vị trí của Leda trong bộ Synopsys Tools


1.3.4 VCS
Là công cụ kiểm thử đa chức năng, VCS cung cấp các cơ chế mô phỏng (mô
phỏng ngẫu nhiên hoặc "vét cạn" các trường hợp của đầu vào), phân tích coverage
(coverage chức năng, coverage code ...), sửa lỗi cả trước và sau khi tổng hợp mạch.

 Đầ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…

1.3.5 Design compiler


Là công cụ tổng hợp logic, sử dụng thư viện có sẵn để tổng hợp mạch từ mã RTL;
cho phép thiết kế trong thời gian nhanh nhất, với diện tích mạch nhỏ nhất, công suất tiêu
thụ thấp nhất và độ phủ lớn nhất.

 Đầ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

 Đầu ra : Các vi phạm về thời gian tĩnh

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

 Đầu ra: netlist (.v), .sdc, .def, .spef, .sbpf, .gdsii

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.

 Đầu vào : 2 file HDL cần kiểm chứng, file .svf


 Đầu ra: kết quả so sánh 2 file HDL
Hình 6: Vị trí của Formality trong bộ Synopsys Tools
Chương 2 : Thiết kế tính toán căn bậc 2 với bộ công cụ phần mềm
Synopsys
2.1. Mục tiêu đề tài

- Thiết kế hoàn thiện bộ tính căn bậc 2.


- Củng cố kinh nghiệm về cách xây dựng và hoàn thiện một đề tài.
- Nâng cao khả năng mô tả phần cứng bằng ngôn ngữ Verilog.
- Biết cách sử dụng phần mềm Synopsys.
- Biết mô tả phần cứng bằng ngôn ngữ Verilog.
- Có khả năng tìm kiếm và đọc tài liệu trên mạng.
- Có kiến thức cơ bản về thiết kế phần cứng.
2.2. Thuật toán

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 compile all

 chọn simulate → start simulation

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

• chuột phải vào biến clk → clock.. → ok


• chuột phải tiếp add → to wave → all items in region
• tất cả các biến ngoại trừ clk(trong cửa sổ wave): chuột phải → radix → decimal
• chuột phải biến X → force


• đá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

- Giao diện người dùng hiện lên:


Figure 1: Khởi động DC

Figure 2: Màn hình khởi động Design Complier

Bước 1: Cài đặt thư viện


File → Setup
Figure 3: Cài đặt thư viện

- Search path : chọn đường dẫn đến thư viện milkyway :


/home/huyentt/milkyway/tcbn45gsbwp_120a/frame_only_HVH_0d5_0/tcbn45gsbwp
/LM/ - Target library: thư viện công nghệ của nhà sản xuất
/home/huyentt/milkyway/tcbn45gsbwp_120a/frame_only_HVH_0d5_0/tcbn45gsbwp
/LM/tcbn45g sbwpbc.db - Symbol library : thư viện kí hiệu có sẵn trong thư mục cài
đặt của synopsys /usr/synopsys/dc/libraries/syn/generic.sdb - Synthetic library : thư
viện tổng hợp có sẵn trong thư viện của synopsys
/usr/synopsys/dc/libraries/syn/dw_foundation.sldb - Link library : đường dẫn đến thư
viện bao gồm 2 thư viện Synthetic library và Target library

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

File → Link Design

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

- Design → Reset Current Design


Thực hiện reset design nhằm xóa bỏ các ràng buộc (nếu đã có) trước đó.
- Attributes → Operating Environment → Operating Condition để thiết lập môi trường
tổng hợp. Môi trường này được định nghĩa sẵn trong file thư viện logic. Tùy thuộc vào
yêu cầu tổng hợp mà cần thực hiện với nhiều môi trường khác nhau hay không.
- Thiết lập Wire Load Model. Vào Attributes → Operating Environment → Wireload.
Chọn ZeroWireload.
- Thiết lập đầu vào clock: Chọn Attributes → Specify Clock.
Chọn “Don't touch network”: trong quá trình tổng hợp thì tín hiệu clock được bảo vệ.
Chọn “Fix hold”: khắc phục các lỗi hold time sau khi tổng hợp.
- Chọn module top donghoso trong cửa sổ Logic Hierarchy. Thiết lập Drive Strength
trong Operating Environment đối với từng đầu vào. Chọn thư viện thiết kế
DFD1BWP.
- Thiết lập Input Delay trong Operating Environment đối với 3 đầu vào: rst, sel, inc.
- Thiết lập Output Delay trong Operating Environment đôi với các đầu ra led 7 thanh.
- Thiết lập Don’t Touch Network đối với đầu vào reset như sau: Attributes →
Optimization Directives → Input Port.
- Kiểm tra timing bằng cách vào Timing → Check Timing. Đầu ra là 1 tương đương với
kết quả đúng.
- Chọn “Don't touch network”: trong quá trình tổng hợp thì tín hiệu clock được bảo vệ.

Bước 5: Tổng hợp thiết kế

- 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ế

Thực hiện lại bước Check Design như đã miêu tả ở trên.

Bước 7: Xuất kết quả và báo cáo

Xuất ra file dc_clock.v, clock.sdf, clock.sdc để sử dụng cho IC Compiler và mô phỏng


mức gate bằng các lệnh sau:

write –format Verilog –hierarchy –output dc_clock.v

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_timing > /home/lab/vlsi/report_timing_default.txt

report_area –hierarchy > /home/lab/vlsi/report_area_default.txt

report_resources

report_constraint –all_violators

Tắt file theo dõi


set_svf –off
File “.svf” được sử dụng trong quá trình kiểm tra Formality.

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

always @ (posedge clk)


begin
if (x1 > e)
begin
x = x1;
y = y1;
end
else
begin
b = x1;
end
end
endmodule

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

Des/Clust/Port Wire Load Model Library


------------------------------------------------
dmbin ZeroWireload tcbn45gsbwpbc
topdm_1 TSMC512K_Lowk_Aggresive
tcbn45gsbwpbc
bindm ZeroWireload tcbn45gsbwpbc
Point Incr Path
-----------------------------------------------------------
clock clk (rise edge) 0.00 0.00
clock network delay (ideal) 0.00 0.00
dm/b_reg[0]/CP (DFQD1BWP) 0.00 0.00 r
dm/b_reg[0]/Q (DFQD1BWP) 0.03 0.03 r
dm/b[0] (bindm) 0.00 0.03 r
Y[0] (out) 0.00 0.03 r
data arrival time 0.03
clock clk (rise edge) 1000000000.00
1000000000.00
clock network delay (ideal) 0.00 1000000000.00
output external delay -2000000000.00
-1000000000.00
data required time -1000000000.00
-----------------------------------------------------------
data required time -1000000000.00
data arrival time -0.03
-----------------------------------------------------------
slack (VIOLATED) -1000000000.00
***** End Of Report *****
****************************************
Report : constraint
Design : topdm_1
Version: D-2010.03-SP5-2
Date : Sat Jun 22 08:44:20 2019
****************************************
Weighted
Group (max_delay/setup) Cost Weight Cost
-----------------------------------------------------
clk 1000000000.00
1.00 1000000000.00
default 0.00 1.00 0.00
-----------------------------------------------------
max_delay/setup 1000000000.00

Total Neg Critical


Group (critical_range) Slack Endpoints Cost
-----------------------------------------------------
clk 31999987712.00
32 31999987712.00
default 0.00 0 0.00
-----------------------------------------------------
critical_range 31999987712.00

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)

***** End Of Report *****


****************************************
Report : power
-analysis_effort low
Design : topdm_1
Version: D-2010.03-SP5-2
Date : Sat Jun 22 08:45:50 2019
****************************************
Library(s) Used:
tcbn45gsbwpbc (File:
/home/lab/Desktop/milkyway/tcbn45gsbwp_120a/frame_only_HVH_0d5_0/tcbn45gsbwp/LM/tcbn4
5gsbwpbc.db)
Operating Conditions: BCCOM Library: tcbn45gsbwpbc
Wire Load Model Mode: segmented
Design Wire Load Model Library
------------------------------------------------
topdm_1 TSMC512K_Lowk_Aggresive
tcbn45gsbwpbc
bindm ZeroWireload tcbn45gsbwpbc
dmbin ZeroWireload tcbn45gsbwpbc
Global Operating Voltage = 0.99
Power-specific unit information :
Voltage Units = 1V
Capacitance Units = 1.000000pf
Time Units = 1ns
Dynamic Power Units = 1mW (derived from V,C,T units)
Leakage Power Units = 1nW
Cell Internal Power = 7.1739 pW (63%)
Net Switching Power = 4.2268 pW (37%)
---------
Total Dynamic Power = 11.4007 pW (100%)
Cell Leakage Power = 631.9954 uW
***** End Of Report *****
KẾT LUẬN

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.

You might also like