1 CHƯƠNG 1. Quy Trình Thiết Kế ASIC I- Giới thiệu tổng quan và vị trí của ASIC trong mô hình thiết kế ASIC (Application Specific Intergrated Circuit) được hiểu là vi mạch tích hợp dùng cho một ứng dụng cụ thể. Khi nói thiết kế ASIC thì có thể hiểu rằng đang nói về một phương pháp trong nhiều phương pháp thiết kế vi mạch tích hợp mật độ cao. Hình vẽ sau mô tả việc thống kê các phương pháp thiết kế vi mạch tích hợp mật độ cao. Dựa trên mô hình 1.1 có thể thấy được hai nhánh chính trong việc phân chia các phương pháp là: Fully Custom và Semi Custom. Việc phân chia hai mô hình này dựa trên cách thức mà mạch tích hợp được xây dựng. Fully Custom: Với phương pháp này, gần tất cả các công đoạn thiết kế mạch tích hợp đều có sự tham giam của con người từ cấp độ thấp nhất (cấp độ CMOS – CMOS Level) cho đến cấp độ cao nhất (cấp độ chip – Chip Level). Các công cụ tự động không được đánh giá cao trong mô hình này, chủ yếu chúng chỉ nhằm mục đích hổ trợ, tạo môi trường để định tính và định lượng. Các phương thức tối ưu và hiệu năng phụ thuộc chủ yếu vào yếu tố con người. Do đó, phương pháp này chỉ phù hợp với các luồng thiết kế chip quy mô nhỏ (IO cell), các thiết kế có tính kế thừa (Memory) và các thiết bị vi mạch tương tự (Analog device). Semi Custom: Ngược lại với phương pháp trên, các công cụ tự động được sử dụng nhiều trong mô hình này. Các tác vụ phức tạp và nhiều công đoạn được các công cụ tự động chia sẽ bớt cho con người. Gần như con người chỉ làm việc với các cấp độ cao (cấp độ cổng – Gate Level). Các công cụ tự động này cho phép con người Hình 1.1 Các phương pháp thiết kế vi mạch tích hợp
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
CHƯƠNG 1. Quy Trình Thiết Kế ASIC
I- Giới thiệu tổng quan và vị trí của ASIC trong mô hình thiết kế
ASIC (Application Specific Intergrated Circuit) được hiểu là vi mạch tích hợp dùng cho
một ứng dụng cụ thể. Khi nói thiết kế ASIC thì có thể hiểu rằng đang nói về một phương
pháp trong nhiều phương pháp thiết kế vi mạch tích hợp mật độ cao.
Hình vẽ sau mô tả việc thống kê các phương pháp thiết kế vi mạch tích hợp mật độ cao.
Dựa trên mô hình 1.1 có thể thấy được hai nhánh chính trong việc phân chia các phương
pháp là: Fully Custom và Semi Custom. Việc phân chia hai mô hình này dựa trên cách thức
mà mạch tích hợp được xây dựng.
Fully Custom: Với phương pháp này, gần tất cả các công đoạn thiết kế mạch tích
hợp đều có sự tham giam của con người từ cấp độ thấp nhất (cấp độ CMOS –
CMOS Level) cho đến cấp độ cao nhất (cấp độ chip – Chip Level). Các công cụ tự
động không được đánh giá cao trong mô hình này, chủ yếu chúng chỉ nhằm mục
đích hổ trợ, tạo môi trường để định tính và định lượng. Các phương thức tối ưu và
hiệu năng phụ thuộc chủ yếu vào yếu tố con người. Do đó, phương pháp này chỉ
phù hợp với các luồng thiết kế chip quy mô nhỏ (IO cell), các thiết kế có tính kế
thừa (Memory) và các thiết bị vi mạch tương tự (Analog device).
Semi Custom: Ngược lại với phương pháp trên, các công cụ tự động được sử dụng
nhiều trong mô hình này. Các tác vụ phức tạp và nhiều công đoạn được các công
cụ tự động chia sẽ bớt cho con người. Gần như con người chỉ làm việc với các cấp
độ cao (cấp độ cổng – Gate Level). Các công cụ tự động này cho phép con người
Hình 1.1 Các phương pháp thiết kế vi mạch tích hợp
2
có thể thực hiện khối lượng công việc lớn hơn. Điều này cho phép mô hình tạo ra
các vi mạch tích hợp phức tạp với nhiều chức năng hơn (CPU, các IP xử lý ảnh, âm
thanh, dữ liệu …).
Trong mô hình Semi Custom, 3 phương pháp nhỏ khác lại được phân dựa trên đặc tính
của các đơn vị logic và cách mà các đơn vị logic kết nối với nhau.
Standar Cell: Các cell (AND, OR, DFF…) được các nhà sản xuất cung cấp sẵn
dưới dạng các bộ thư viện theo các công nghệ khác nhau (180 nm, 65 nm, 28
nm,…). Mỗi một công nghệ sẽ có một hay nhiều bộ thư viện tương ứng. Các kỹ sư
thiết kế dựa trên các bộ thư viện này để phát triển các vi mạch tích hợp mật độ cao
từ cấp độ Cổng trở lên.
Gate Array: Cũng tương tự như Standard Cell, Gate Array cũng được xem như
một thư viện cổng có sẵn. Điều khác biệt giữa chúng là các Gate Array đã được sản
xuất thành các chip vật lý sẵn có nhưng chỉ ở dạng các cổng logic rời rạc mà chưa
được liên kết. Các kỹ sư có nhiệm vụ liên kết các cổng này để tạo nên các ứng
dụng tương ứng. Với mô hình này, việc thiết lập các mặt nạ trong quá trình sản
xuất là cần thiết nhưng chỉ cần cho việc liên kết, đi dây nhằm kết nối các đơn vị
logic sẵn có.
Programmale Logic: Cũng tương tự Gate Array nhưng việc tạo các mặt nạ trong
quá trình sản xuất thì không cần nữa. Những chip vật lý dạng này tuy chưa hình
thành các ứng dụng cụ thể nhưng các cổng logic và các dây dẫn kết nối đã có sẵn
và người kỹ sư có thể lập trình trên các chip này để tạo các kết nối cho những ứng
dụng cụ thể mà không cần đến bất cứ quy trình sản xuất nào từ nhà máy nữa.
Trong các mô hình sản xuất trên, ASIC được thể hiện bởi khu vực đươc đánh dấu qua hình
1.2
Hình 1.2 Phương thức chế tạo ASIC
3
Do ASIC được hiểu như các vi mạch mang tính năng cố định không thay đổi nên mô hình
Custom Design và StandardCell la hai mô hình tiêu biểu. Thuyết minh chỉ đề cập đến mô
hình sử dụng Standar Cell ở các phần tiếp theo vì tính phù hợp của nó cho các ứng dụng lớn
và mật độ tích hợp cao trong các sản phẩm xử lý tín hiệu âm thanh mà thuyết minh tiếp cận.
II- Quy trình sản xuất chip ASIC
1. Quy trình sản xuất chip
Quy trình sản xuất chip ASIC - StandarCell được minh họa tổng quan bởi hai bước chính
trong hình 1.3
Development: Dựa vào các thư viện được cung cấp sẵn bởi nhà sản xuất, các kỹ sư
sẽ thiết kế phát triển các vi mạch tích hợp dựa trên các ràng buộc tương ứng của
thư viện này. Trong bước này, các chức năng mong muốn của vi mạch tích hợp
được hình thành dựa trên sự liên kết giữa hàng triệu các cổng logic. Kết thúc của
bước này, các kỹ sư thiết kế sẽ cho ra một sản phẩm trí tuệ có thể tạm gọi là một
gói phần mềm (Trong công nghiêp: <file>.gds). Gói file này chứa các thông tin
layout của toàn bộ thiết kế cùng với các số liệu hiệu năng tương ứng (Diện tích,
năng lượng, tốc độ …).
Fabrication: Với thông tin từ <file>.gds từ bước phát triển thiết kế, các kỹ sư sản
xuất sẽ thiết kế mặt nạ sản xuất với công nghệ tương ứng. Dựa trên mặt nạ này, các
vi mạch tích hợp được sản xuất trên các đĩa silicol wafer tương ứng.
Do đề tài tiếp cận quy trình phát triển của một vi mạch tích hợp nên chỉ bước Development
được tham khảo và phân tích. Các bước nhỏ trong quy trình phát triển một vi mạch tích hợp
theo mô hình ASIC được đặc tả bởi hình vẽ 1.4.
Tiếp tục phân chia quy trình phát triển thành hai quy trình chính là FrontEnd và BackEnd
Development
Fabrication
Hình 1.3 Hai bước chính trong sản xuất chip ASIC
4
FrontEnd: Tại bước này, các chức năng chính ở mức logic của thiết kế được
thiết kế đầy đủ. Khi hoàn tất bước này, các chức năng của chip cũng được đảm bảo
chính xác nhờ các công đoạn kiểm tra lỗi với sự hỗ trợ của các công cụ tương ứng.
BackEnd: Tại bước này, các đặc tính vật lý hay hiệu năng (Thời gian trễ, diện tích
…) của thiết kế được kiểm tra và tối ưu. Khi kết thúc các thông số hiệu năng được
tổng hợp. Các thông số này cũng chính là thông số của thiết kế. Sản phẩm cuối
cùng của bước này chính là <file>.gds sẽ được gửi đến nhà máy sản xuất.
Trong hình 1.4, các công cụ hổ trợ đều của công ty Synopsys, một trong những công ty hổ
trợ công cụ thiết kế vi mạch lớn nhất thế giới. Các sản phẩm của từng bước nhỏ được liệt kê
là các sản phẩm tiêu biểu. Những thông tin chi tiết hơn về công cụ và sản phẩm của các bước
nhỏ sẽ được phân tích chi tiết hơn ở các mục sau. Thuyết minh tiếp cận các phần mềm từ
Synopsys vì tính thống nhất và sự đảm bảo uy tín của các phần mềm này đã được đánh giá
bởi nhiều công ty lớn trên thế giới. Do đó, các phần sau sẽ đề cập đến các phần mềm từ
Synopsys mà không phải các phần mềm từ các công ty khác.
2. Một số thông tin vê công ty Synopsys
Được thành lập vào năm 1986 bởi Tiến sĩ Aart de Geus và một đội ngũ kỹ sư từ Trung tâm
vi điện tử Bắc Carolina, Synopsys là công ty chuyên cung cấp các phần mềm tự động nhằm
giúp các kỹ sư thiết kế tiết kiệm thời gian cho việc phát triển các sản phẩm vi mạch. Ngoài
các phần mềm chuyên dụng, Synopsys còn hổ trợ các giải pháp thiết kế cũng như các thiết kế
có sẵn. Hiện này, Synopsys đang dẫn đầu trong các công ty phát triển phần mềm trong lĩnh
vực này. Một số công ty tương tự như sau: Cadence, Mentor Graphic, Magma, Aldec…
Hình 1.4 Các bước trong quy trình phát triển một vi mạch ASIC
5
Trong mô hình thiết kế ASIC, Synopsys hổ trợ đầy đủ các phần mềm chuyên dụng từ môi
trường phát triển đến môi trường kiểm tra để các kỹ sư phát triển từ bước Specification đến
P&R. Do đó, Synopsys luôn là sự lựa chọn ưa thích cho các công ty sản xuất các sản phẩm
ASIC.
3. Các khái niệm cơ bản về thư viện và công nghệ CMOS
3.1.C hệ C
Trong thập kỉ này, những con chip được thiết kế chế tạo từ công nghệ CMOS. CMOS là
linh kiện bán dẫn loại -xít Kim Loại. Nó bao gồm tran-sít-to NMOS và PMOS. Để
hiểu CMOS hơn, đầu tiên chúng ta cần biết về Tran-sít-to MOS (FET) ở phần sau. Trong mô
hình thiết kế ASIC, những kỹ sư thiết kế chỉ làm việc ở mức thấp nhất là mức cổng (AND,
OR, …) chứ không làm việc ở mức CMOS. Bản chất các cổng logic này được cấu thành từ
các CMOS. Tuy nhiên trong mô hình thiết kế ASIC, công việc cấu thành các cổng từ các
CMOS là việc của các nhà sản xuất. Họ kết nối các CMOS tạo nên các cổng khác nhau hoặc
các cổng cùng loại nhưng khác về hiệu năng (tốc độ, diện tích, độ dẫn điện …) và tập khổng
lồ các cổng này tạo nên một thư viện. Thư viện này được các nhà sản xuất cung cấp cho các
nhà thiết kế. Dựa trên thông số của thư viện này, các nhà thiết kế có thể phát triển các vi
mạch của họ một cách tùy ý với cấp độ thấp nhất là lớp cổng. Sau đây một số nét về
Transistor CMOS được giới thiệu.
- t-to MOS
MOS thuộc về tran-sít-to hiệu ứng trường, loại linh kiện bán dẫn ô-xít kim loại. MOS là
đơn vị cơ bản trong thiết kế những mạch tích hợp kích c lớn. Nó là được điều khiển bằng
điện áp. Những tran-sít-to này được hình thành tương tự như ý tưởng làm một bánh
sandwich bao gồm các lớp bán dẫn, kim loại, lớp cách điện xếp chồng lên nhau. Những lớp
này được làm theo một mô hình sẵn có để mà cho phép những tran-sít-to được hình thành
trong vật liệu bán dẫn ( chất nền ) tran-sít-to MOS bao gồm 3 cực: Nguồn, Máng, và cổng.
Cực Nguồn và Máng thì tương tự nhau, và được đánh dấu dựa trên điểm mà nó kết nối.
Nguồn là loại đầu cuối, hoặc nút, hoạt động như nguồn của các hạt mang điện; các hạt mang
điện ra khỏi nguồn và đi tới máng. Đối với MOSF T kênh N (NMOS), cực nguồn mang điện
tích âm hơn trong các cực với kênh P (PMOS), nó mang điện tích dương hơn trong các cực.
ng bên dưới cổng ô-xít được gọi là kênh . ình bên dưới là Tran-sít-to MOS.
Hình 1.5 Mặt cắt P MOS đơn giản
6
Với các điều kiện cung cấp điện áp ở cực Cổng và cực Máng, hoạt động của các tran-sít-to
được phân chia làm 3 vùng rõ rệt. Vùng tắt (không có dòng điện chạy từ cực máng đến cực
nguồn), vùng tuyến tính (Dòng điện tăng dần chạy từ cực máng đến cực nguồn) và vùng bảo
hòa (dòng điện giữ nguyên giá trị chạy từ cực nguồn đến cực máng). ình vẽ sau mô tả 3
vùng nêu trên của CMOS
Công nghệ CMOS dựa trên các tran-sít-to NMOS và CMOS. Những thiết bị linh kiện bán
dẫn b -xít kim loại (CMOS) có mức lô-git thường được sử dụng với độ nhạy cao, một số
lượng lớn tran-sít-to tích hợp trong các mạch được tìm thấy trong mọi thứ, từ con vi xử lý
phức tạp cho tới những mạch truyền tải và xử lý tín hiệu. Cấu trúc CMOS rất phổ biến bởi vì
đặc tính tiêu thụ năng lượng thấp, tốc độ xung clock hoạt động cao, và dễ dàng thực hiện ở
các cấp độ tran-sít-to. Các mạng tran-sít-to bổ khuyết kênh p và kênh n được d ng để kết nối
đầu ra của các thiết bị có mức lô-git với cả nguồn ung cấp dd và ss cho một trạng thái
logit đầu vào có sẵn. Các tran-sít-to MOSF T có thể được coi như các công tắc đóng ngắt
đơn giản. Công tắc được đóng (dẫn) khi có dòng chảy giữa Nguồn và Máng.
Các hạt mang điện trong tran-sít-to PMOS là lỗ trống và hạt mang điện trong NMOS là
các ê-léc-tron. Độ linh động của các ê-léc-tron thì gấp lần các lỗ trống . ì điều này,ng
ra tăng và giảm vài lần là khác nhau. Để bằng nhau, chỉ số L của tran-sít-to PMOS được
tạo ra cao gấp lần tran-sít-to NMOS. ằng cách này, PMOS và NMOS tran-sít-to sẽ có
c ng khả năng dẫn và truyền điện. Trong một thư viện mẫu chính thống, độ dài L của một
tran-sít-to là luôn luôn không đổi. Độ rộng được thay đổi để có sức mạnh điều khiển
khác nhau cho mỗi cổng. Trở kháng được tính theo L . Do đó nếu tăng độ rộng, trở kháng
suy giảm.
Ở vi mạch số, chủ yêu CMOS được kích thích hoạt động ở hai phân vùng tắt và bảo hòa.
Việc chuyển trạng thái giữa hai phân vùng (vùng tuyến tính) được rút ngắn nhất có thể nhằm
giúp CMOS đạt trạng thái ổn định trong thời gian nhỏ nhất có thể.
Hình 1.6 Vùng hoạt động của CMOS
7
III- Chi tiết quy trình thiết kế chip ở bước thiết kế FrontEnd
1- Đặc tả chức ă ch h – Specification
Đầu tiên, dựa trên các yêu cầu của khách hàng đề ra, những sơ khởi và chức năng chính
của thiết kế được hình thành. Ở bước này, các chức năng được đặc tả ở dưới dạng các hình vẽ
sơ đồ khối, giao diện cũng như những hiệu năng ban đầu mong muốn đạt được.
Gần gũi nhất đối với các bản đặc tả này có lẽ là các bản DataSheet của các IP hay các
thiết bị. Có thể hiểu rằng các bản DataSheet là phiên bản hoàn thiện của các bản đặc tả khi
mà chip đã được sản xuất.
Do đó, các thông số hiệu năng trên các DataSheet cũng như giao diện, kiến trúc khối là
chính xác và đã được đảm bảo. Ngược lại ở các bản đặc tả, những giao diện, kết nối và những
thông số này ở dạng ước lượng hay mong muốn đạt được và có thể sẽ được chỉnh sửa nhiều
lần trong quá trình thiết kế.
Dựa vào quy mô thiết kế mà có thể hiểu đặc tả chức năng được chia làm hai loại mà tạm
gọi là General Specification và Intenal Specification .
General Specification: Các đặc tả chức năng chỉ ở dạng khối. Các kết nối giữa
các khối cũng như giao diện cấp độ chip được liệt kê chi tiết. Các thông số hiệu
năng được đặc tả cho từng khối. Nói chung, đặc tả theo khối được thể hiện.
Internal Specification: Đặc tả theo dạng này dành cho các kỹ sư thiết kế phần
cứng mức độ RTL. Các đặc tả này được chi tiết hóa đến các mức cổng và FlipFlop.
Do đó, các chức năng chính của thiết kế cũng được chi tiết hóa một cách rõ ràng
với các bảng giá trị cũng như những liên kết sâu bên trong các khối chính trong
thiết kế.
2- Thiết kế mức hệ thống – System Level Design - SLD
Khái niệm thiết kế hệ thống (SLD) được xem là khái niệm mới trong thập kỷ vừa qua.
ước thiết kế này được thêm vào cùng với những thuận lợi mà nó tạo ra nhằm giải quyết các
vấn đề chính như sau.
Giảm thiểu tối đa thời gian chip ra thị trường từ lúc có yêu cầu của khách hàng.
Giảm thiểu tối đa số chip lỗi trước và sau quá trình sản xuất.
Để hiểu tại sao có thể giảm thiểu được những số liệu này, tiếp tục phân tích hình 1.7 để
hiểu r hơn những khái niệm mới và cách mà bước thiết kế này thực hiện
8
2.1 C++ trong thiết kế phần cứng
Là một trong những ngôn ngữ lập trình hướng đối tượng cấp cao. C++ kế thừa toàn bộ các
thư viện C chuẩn kết hợp với đặc tính hướng đối tượng, nó trở thành một ngôn ngữ được
đánh giá mạnh mẽ trong những công đoạn mô phỏng hay mô tả hành vi cho phần cứng.
Trong thiết kế phần cứng, C++ đã trở thành công cụ quen thuộc trong các môi trường kiểm
tra thiết kế vì tính linh động và thời gian chạy rất ngắn của chúng.
Ở đây, những ưu điểm của C++ được khai thác trong lĩnh vực phần cứng mà không đề cập
trong lĩnh vực phần mềm. Một ví dụ minh họa dễ hiểu cho thấy việc thiết kế hành vi của một
IP thông thường, sau khi hiểu được những đặc tả của thiết kế, một người kỹ sư có kinh
nghiệm chỉ mất khoảng phân nữa thời gian để thiết kế và kiểm tra hành vi của nó so với
người thiết kế bằng ngôn ngữ phần cứng (Verilog & VHDL).
Do đó, C++ được ưa chuộng trong mô hình kiểm tra thiết kế phần cứng. Nó mô tả hành vi
của phần cứng và so sánh kết quả của nó với kết quả phần cứng cần kiểm tra và cho những
kết quả so sánh cuối cùng.
Trong thuyết minh không chi tiết hóa ngôn ngữ C++ vì nó được xem như công cụ ngôn
ngữ hổ trợ trong quá trình phát triển vi mạch.
2.2 SystemC Class
Mặc d C++ được đánh giá là ngôn ngữ mạnh mẽ trong việc hổ trợ thiết kế các mô hình
mô phỏng hành vi của phần cứng nhằm kiểm tra và đánh giá so với các phần cứng thật. Tuy
nhiên C++ vẫn còn tồn tại nhiều hạn chế như sau.
Hạn chế trong việc mô phỏng các tác vụ song song và tính ưu tiên giữa các tác vụ
Hình 1.7 Các khái niệm và vấn đề trong bước thiết kế SLD
9
Hạn chế trong việc mô phỏng các hiệu năng như thời gian, hiệu suất.
Hạn chế trong việc mô phỏng các giao thức bắt tay của phần cứng.
Bởi thế, các nhóm nghiên cứu đã phát triển một lớp dữ liệu mới cho C++ là System C
nhằm mục đích khắc phục các nhược điểm trên. Thông qua các đối tượng trong lớp SystemC,
các chức năng của phần cứng được mô hình hóa giống thật hơn. Ngoài ra, một số chức năng
tháo g lỗi như xem waveform cũng được hổ trợ.
Tương tự như các lớp dữ liệu khác, SystemC được sử dụng như một lớp dữ liệu bình
thường. Người dùng sau khi khai báo đều có thể sử dụng mọi đối tượng mà lớp này cung cấp.
2.3 Mô hình truyền tải – Transaction Level Model – TLM
Với C++ và lớp SystemC, các mô phỏng hành vi phần cứng gần như hoàn thiện. Tuy nhiên
vẫn còn một số hạn chế về các giao thức giao tiếp giữa các khối kiến trúc với nhau. Tiêu biểu
cho điều này là các giao thức Bus nói riêng. Nếu sử dụng ngôn ngữ để mô tả các giao thức
bắt tay sao cho giống như các giao thức mà phần cứng thể hiển, đó là một điều hết sức khó
khăn với những kỹ sư mô phỏng hành vi. Mặt khác tính kế thừa mất đi mặc dù chỉ một số
thay đổi nhỏ trong giao thức. ơn nữa hiệu năng về mô phỏng thời gian thực cũng sẽ bị hạn
chế khi theo phương thức cũ này.
Chính vì những hạn chế này, mô hình TLM được phát triển bởi Thorsten Grötker vào năm
2000, một trong những người đứng đầu của bộ phận R&D thuộc công ty Synopsys. Bằng
ngôn ngữ C++ với sự hổ trợ của lớp SystemC, mô hình TLM được ra đời nhằm thống nhất
mô phỏng các giao thức. Nói một cách đơn giản, TLM được xem như một lớp dữ liệu mới
nhằm hổ trợ C++ trong vấn đề mô hình hóa các giao thức truyền nhận và bắt tay giữa các IP
hay các core xử lý. Tương tự lớp SystemC, TLM cho phép người dung sử dụng những đối
tượng mà nó cung cấp để phát triển các phương pháp đánh giá riêng cho IP cũng như hệ
thống trong quá trình bắt tay hay truyền tải dữ liệu.
2.4 Platform and SystemC Model
Platform: Khái niệm platform được giới thiệu trong bước thiết kế này nhằm ám chỉ
toàn bộ mô hình phần cứng được mô hình hóa bằng một gói phần mềm mà gói phần
mềm này được phát triển dựa trên nền tảng C++ và SystemC. Khi một hệ thống mới
ra đời, những thay đổi đáng kể hay không đáng kể sẽ được cập nhật. Dựa trên những
đặc tính cập nhật này, gói phần mềm cũ sẽ được cải tiến sao cho mô hình hóa giống
với hệ thống mới. Công việc này sẽ tốn rất ít thời gian vì việc cải tiến hành vi phần
mềm trên nền tảng C++ là một công việc dễ dàng. Khái niệm Platform có thể hiểu
giống như khái niệm một khuôn mẫu có sẵn để sản xuất các mặt hàng và người sản
xuất có thể chế biến thay đổi các mẫu cụ thể dựa trên khuôn mẫu tổng quát này.
SystemC Model: Ám chỉ phương pháp mô hình hóa phần cứng trên nền tảng C++ với
sự hổ trợ bởi các đối tượng trong lớp SystemC.
10
Để hiểu hơn về tính liên kết giữa các khái niệm trên, hình 1.8 được giới thiệu. Trong hình
1.8, một MCU (micro controller) tổng quan với các IP tiêu biểu bên trong được giới thiệu.
Các hành vi của các IP cũng như CPU, DMAC,… được mô hình hóa trên nền tảng
ngôn ngữ C++ với sự hổ trợ của lớp SystemC.
Các khối IP và CPU được liên kết với nhau thông qua bus. us này được mô hình
hóa bởi mô hình TLM được giới thiệu ở trên.
Khi các mô hình được phát triển và được nối với nhau, chúng hình thành nên một
Platform hay ta nói một MCU giả lập được phát triển trên nền tảng ngôn ngữ lập
trình cấp cao. Ở phương diện thiết kế có thể xem đây là một gói phần mềm.
Như vậy, để trả lời cho các câu hỏi đã nếu từ trước là tại sao cần bước thiết kế SLD trong
quy trình phát triển ASIC, thêm một hình vẽ nữa được thể hiện
Hình 1.8 Ví dụ mô hình hóa phần cứng của một MCU
Hình 1.9 Vai trò của SLD trong quy trình phát triển ASIC
11
Trong hình 1.9, khi kết thúc bước SLD, một phần cứng giả lập được tạo ra. Mô hình này
sau đó được kiểm tra và đánh giá hiệu năng. Khi các kết quả đánh giá được cho là thỏa mãn
và phù hợp với yêu cầu mong muốn ban đầu cũng có nghĩa là những yêu cầu đặt ra ở bước
đặc tả hợp lý. Ngược lại, trong quá trình kiểm tra và đánh giá hiệu năng của mô hình phần
cứng, những kết quả không phù hợp hay các lỗi về đặc tả được phát hiện sẽ được hồi tiếp.
Lúc này các yêu cầu ban đầu trong đặc tả sẽ được cải thiện hoặc đổi mới hoàn toàn nếu đó là
những lỗi đáng kể.
Như vậy, kết thúc của bước SLD sẽ cho ta một platform tương ứng với mô hình phần cứng
và một đảm bảo cho bản đặc tả hệ thống cần thiết kế (golden specification). Dựa trên hai sản
phẩm này, những lợi ích sau được phân tích.
Với việc đảm bảo tính đúng đắn và khả thi của bản đặc tả, việc thực thi viết thiết kế ở cấp
độ thấp hơn (RTL) dựa trên bản đặc tả đạt tính an toàn cao. Những lỗi mắc phải khi xung đột
giữa thiết kế phần cứng và đặc tả được hạn chế bớt. Điều này có giá trị rất lớn đối với những
xung đột được phát hiện muộn (ở những khâu sau cùng của việc thiết kế). Đó là lý do làm
cho sản phẩm phần cứng tránh được rủi ro và làm thời gian đưa ra thị trường nhanh chóng.
Mặt khác, những mô hình phần mềm chạy trên nền tảng phần cứng luôn được thiết kế song
song với phần cứng. Các phần mềm này luôn được phát triển với tốc độ nhanh hơn phần
cứng. Tuy nhiên, việc phát triển nhanh hơn sẽ trở nên vô ích nếu chúng không được kiểm
duyệt và cải thiện. Việc chờ đợi phần cứng là một điều bất kháng đối với những kỹ sư phần
mềm ở những thời điểm trước. Khi platform được tạo ra, các phần mềm này có thể chạy giả
lập một cách dễ dàng trên các Platform này. Việc này giúp giảm bớt thời gian chờ đợi phần
cứng cũng như kiểm tra được sự phù hợp giữa phần cứng và phần mếm từ rất sớm. Đôi khi
các lỗi của phần cứng có thể được phát hiện ở bước này.
Một yếu tố thuận lợi nữa ở bước thiết kế SLD là môi trường thiết kế và kiểm tra đơn giản
chỉ cần một trình biên dịch cho C++. Điều này luôn là điều dễ dàng không những trong môi
trường học thuật mà còn trong môi trường công nghiệp vì có rất nhiều trình biên dịch miễn
phí hoặc dễ dàng phát triển chúng dựa trên một nền tảng sẵn có.
Như vậy, SLD ngày càng trở nên quan trọng trong quy trình sản xuất chip ASIC với mật
độ tích hợp cao. Trong tương lai gần, nó sẽ thay thế ngôn ngữ lập trình phần cứng
(Verilog/VHDL) trong việc thiết kế phần cứng với các công cụ hổ trợ tổng hợp xuống cấp độ
cổng từ C++ và SystemC.
3- Thiết kế mức thanh ghi – RTL design
Sau khi hoàn thành bước SLD nhằm đảm bảo các đặc tả là chính xác và khả thi, bước thiết
kế RTL được thực hiện. RTL (Register Transfer Level) được hiểu là thiết kế ở cấp độ thanh
ghi. Ở cấp độ thiết kế này, các luồng dữ liệu luân chuyển bên trong các khối kiến trúc được
làm rõ ở cấp độ từ thanh ghi này qua thanh ghi khác.
Ngôn ngữ được sử dụng ở cấp độ thiết kế này là Verilog hoặc VHDL. Dựa trên các đặc tả
có từ trước, kỹ sư thiết kế sử dụng ngôn ngữ erilog DL để mô hình hóa lại kiến trúc
12
phần cứng. Thuyết minh tiếp cận ngôn ngữ Verilog là ngôn ngữ sẽ được sử dụng để phát triển
đề tài vì tính tiện dụng và gần gũi của nó đới với người lập trình.
Verilog, được chuẩn hóa theo IEEE 1364, là một ngôn ngữ mô tả phần cứng ( DL) được
sử dụng để mô hình hóa các hệ thống điện tử. Nó thường được sử dụng trong việc thiết kế và
kiểm tra mạch kỹ thuật số ở cấp độ truyền dữ liệu giữa thanh ghi (RTL level). Nó cũng được
sử dụng trong việc kiểm tra hành vi các vi mạch tương tự và mạch tín hiệu hỗn hợp (số và
tương tự).
Verilog là ngôn ngữ mô tả phần cứng đầu tiên được phát minh. Nó được tạo ra bởi Phil
Moorby và Prabhu Goel trong m a đông năm 1983 1984. Hiện nay, đã có các phiên bản 95,
2001 và 2005. Ngoài ra, một ngôn ngữ khác là System erilog đã xuất hiện dựa trên nền tảng
của Verilog nhằm cung cấp nhiều tác vụ và hàm hệ thống phục vụ cho việc viết các trường
hợp kiểm tra lớn.
Có một lưu ý về ngôn ngữ thiết kế phần cứng và vai trò của thiết kế ở cấp độ RTL. Mục
đích chính của cấp độ này là mô hình hóa phần cứng bằng ngôn ngữ phần cứng nhưng sản
phẩm coding phải có khả năng tổng hợp xuống lớp cổng được. Ngôn ngữ phần cứng chỉ
mang ý nghĩa công cụ nghĩa là kỹ sư có thể sử dụng ngôn ngữ này tùy biến. Hay nói cách
khác có thể viết mô phỏng phần cứng với nhiều cách thức, đoạn code khác nhau. Mặc dù về
chức năng chúng vẫn đảm bảo chạy đúng như đặc tả nhưng chỉ có những đoạn code thỏa mãn
các ràng buộc thì mới có thể tổng hợp được. Do đó khi sử dụng ngôn ngữ phần cứng vào mục
đích thiết kế phần cứng cần phải chú ý những tiêu chí sau
Phiên bản ngôn ngữ phần cứng mà công cụ biên dịch hổ trợ.
Các ràng buộc và điều kiện để có thể tổng hợp xuống lớp cổng.
Cách thức viết để có thể dễ dàng hiểu và tái sử dụng.
4- Kiểm tra thiết kế mức RTL – RTL Verification
Sau khi kiến trúc được thiết kế ở cấp độ RTL dưới dạng các đoạn mã Verilog/VHDL,
chúng sẽ được kiểm tra và đánh giá các chức năng logic. Có rất nhiều mô hình kiểm tra các
đoạn code RTL, ở đây tạm chia làm 3 mô hình chính.
Unit Test: Kích thích trực tiếp vào ngõ vào của thiết kế nhằm tạo ra các trường
hợp cần kiểm tra.
Combination Test: Nối khối kiến trúc cần kiểm tra (Design Under Test - DUT)
với một số khối liên kết khác trong hệ thống. Mô hình hóa sao cho các ngõ vào của
DUT nhận các tín hiệu từ các khối liên kết. Việc thay đổi các tín hiệu này từ các
khối liên kết cũng chính là các trường hợp cần kiểm tra của DUT.
System Test: Kết nối khối kiến trúc vào trong một hệ thống hoàn chỉnh. Viết các
đoạn chương trình tạo hoạt động cho hệ thống sao cho DUT được sử dụng trong
đoạn chương trình đó. Các trường hợp kiểm tra phụ thuộc vào đoạn chương trình
mà hệ thống chạy trên nó.
13
Để hiểu r hơn về các mô hình kiểm tra này, từng mô hình được rút trích và phân tích.
4.1 Unit Test
Thông thường sau khi thiết kế ở cấp độ RTL, Unit Test được thực hiện luôn bởi những kỹ
sư phát triển code Verilog. Các trường hợp kiểm tra được liệt kê dưới dạng các file tài liệu.
Sau đó, dựa trên các tài liệu này, các trường hợp kiểm tra được phát triển cùng với môi
trường để thực hiện công đoạn kiểm tra này.
Để hiểu r hơn về quy trình kiểm tra Unit Test này, một môi trường và cách thức thực thi
mà thuyết minh sẽ tiếp cận được giới thiệu.
Môi trường thiết kế và kiểm tra: Hệ điều hành Linux.
Ngôn ngữ thiết kế được chọn : Verilog.
Công cụ hổ trợ: Phần mềm VCS của Synopsys và phần mềm DVE.
Môi trường soạn thảo code Verilog: Trình soạn thảo VI trong Linux.
Các trường hợp kiểm tra cũng như cách kích thích các tín hiệu ngõ vào của thiết kế
được mô tả bởi ngôn ngữ erilog và cũng trên trình soạn thảo VI. Từ Test ench
được sử dụng để ám chỉ đoạn mã code erilog mà trong đó chứa cách thức kiểm
tra, thiết kế cần kiểm tra và các trường hợp kiểm tra thiết kế đó.
4.1.1 Linux và trình soạn thảo VI
Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành.
Có rất nhiều phiên bản sau này dựa trên nhân của nó. Nó có lẽ là một ví dụ nổi tiếng nhất
của phần mềm tự do và của việc phát triển mã nguồn mở… Trong môi trường công nghiệp,
đặc biệt là môi trường lập trình thiết kế phần cứng, Linux là hệ điều hành được dung rộng rãi.
Gần như tất cả các công đoạn phát triển vi mạch đều được thực hiện trên môi trường này. Với
môi trường thiên về hổ trợ các tác vụ dựa trên các lệnh, Linux phù hợp cho những tác vụ có
tính lặp đi lặp lại hay những mã lệnh hồi quy…
Trình soạn thảo I cũng là môi trường tương tác giữa người dung với máy tính. Thông
qua trình soạn thảo này, người dùng có thể viết những câu lệnh để gọi các phần mềm hay
soạn thảo những đoạn code trên chính giao diện này. Việc sửa lỗi cũng như g lỗi được hổ
trợ tích cực bởi trình soạn thảo này bởi các tác vụ bằng lệnh nhanh nhẹn. Có thể nói sử dụng
trình soạn thảo VI trên nền Linux là một trong những kỹ năng không thể thiếu của kỹ sư thiết
kế phần cứng
4.1.2 VCS và DVE
VCS là một trong những công cụ mà Synopsys hổ trợ để kiểm tra hành vi, chức năng về
tính logic các thiết kế phần cứng cấp độ RTL. Có thể dùng cụm từ Dynamic erification
cho công việc mà phần mềm VCS hổ trợ. Có thể hiểu rằng phần mềm chỉ hổ trợ kiểm tra tính
logic của thiết kế mà không kiểm tra hay đánh giá các hiệu năng về thời gian, diện tích, năng