Bài viết này được xây dựng với mục đích cung cấp một số kiến thức, khái niệm cơ bản của quá trình kiểm tra thiết kế chip – design verification. Hi vọng qua bài viết, các bạn học sinh sinh viên sẽ có cơ hội hiểu rõ hơn về công việc này, từ đó giúp các bạn tự tin hơn trong việc đưa ra ra quyết định đúng đắn cho những bước tiến tiếp theo trong sự nghiệp của mình.
1. Kiểm tra thiết kế là gì ?
Kiểm tra thiết kế (Design Verification – DV) là quá trình quan trọng trong quy trình thiết kế mạch tích hợp (IC – Integrated Circuit) và hệ thống trên chip (SoC – System on Chip). Nhiệm vụ chính của DV là đảm bảo rằng mạch hoặc hệ thống được thiết kế hoạt động đúng theo yêu cầu và mong đợi trước khi sản xuất hàng loạt (mass production).
2. Vị trí của kiểm tra thiết kế trong quy trình thiết kế IC
Kiểm tra thiết kế (Design Verification – DV) nằm ở bước thiết kế Front-End.
Khi mã RTL (RTL code) đã được viết hoàn chỉnh, các kĩ sư kiểm tra thiết kế (Design Verification Engineer) sẽ tiến hành các bước kiểm thử để đảm bảo tính đúng đắn của mã RTL đó. Nếu có phát hiện ra lỗi sai (defect/bug), các kĩ sư kiểm tra thiết kế sẽ phản hồi lại để các kĩ sư thiết kế sửa lỗi.
Sau khi hoàn tất quá trình kiểm tra, mã RTL sẽ được bàn giao cho các bộ phận khác để tiến hành các khâu tiếp theo trong qua trình thiết kế Back-End.
3. Các bước kiểm tra thiết kế số
Có 7 bước chính trong quá trình kiểm tra thiết kế số.
- Bước 1: Xác định phạm vi và phương pháp kiểm tra
- Bước 2: Phân tích yêu cầu thiết kế
- Bước 3: Viết tài liệu kiểm tra và lập kế hoạch
- Bước 4: Xây dựng môi trường kiểm tra và viết các bộ kiểm tra
- Bước 5: Chạy mô phỏng, debug và sửa lỗi
- Bước 6: Kiểm tra coverage
- Bước 7: Review kết quả
Bước 1. Xác định phạm vi, phương pháp kiểm tra
Phạm vi kiểm tra: cần xác định kiểm tra ở mức IP (IP level) hoặc mức chip (SoC level).
Ở mức IP (IP level) hay còn gọi là UT (Unit Test), hoặc stand-alone test, IP sẽ đứng 1 mình hoặc trong một hệ thống nhỏ trong chip, các kỹ sư sẽ phải giả lập các input từ các khối IP và viết các monitor/checker để kiểm tra ngõ ra của IP đó. Ưu điểm của Unit Test là nhanh, dễ dàng trong việc tạo ra các input cần thiết để có thể kiểm tra được các corner case (những điểm đặc biệt khó kiểm tra) của IP.
Ở mức chip (SoC level), hay còn gọi là ST (System Test), hoặc CT (Combine Test), IP sẽ nằm trong một hệ thống hoàn chỉnh với đầy đủ kết nối với các IP khác. Lúc này các kỹ sư DV sẽ phải tạo ra input cho IP mình bằng cách cấu hình các IP liên quan. Việc này sẽ mất nhiều thời gian và đòi hỏi các kỹ sư phải có kiến thức tốt về hệ thống. Ưu điểm của ST test là sẽ kiểm tra được những trường hợp, điều kiện thực tế của IP khi nằm trong hệ thống, từ đó phát hiện ra những lỗi sai không chỉ của mình mà của những IP khác. Nhược điểm của ST là thường phức tạp, thời gian chạy mô phỏng lâu, và khó để tạo ra được những trường hợp corner case.
Xác định phương pháp kiểm tra: tùy vào phạm vi, tính chất, đối tượng kiểm tra hoặc yêu cầu của dự án mà kỹ sư DV sẽ lựa chọn phương pháp kiểm tra phù hợp. Các phương pháp kiểm tra thông dụng:
- Phương pháp kiểm tra trực tiếp (direct test)
- Phương pháp kiểm tra ngẫu nhiên (random test)
- Phương pháp kiểm tra định hình (formal test)
Trong phạm vi bài viết này tác giả không thể trình bày hết được sự khác nhau giữa các phương pháp trên, sẽ trình bày với các bạn qua những bài tiếp theo.
Bước 2. Phân tích yêu cầu thiết kế (design requirement analysis)
Mục tiêu của các kỹ sư DV là tìm ra những điểm khác biệt giữa yêu cầu thiết kế và thiết kế thực tế của các kỹ sư RTL Design. Để tìm ra những điểm khác biệt này, kỹ sư DV không những phải tìm hiểu chi tiết về thiết kế mà còn phải hiểu được những vai trò, chức năng của thiết kế trong hệ thống. Các kỹ sư DV thường sẽ phải tìm hiểu những tài liệu sau:
- Tài liệu mô tả thiết kế (Design Specification): được viết bởi các kỹ sư RTL Design. Tài liệu này sẽ giúp các kỹ sư DV hiểu được cách các kỹ sư RTL xây dựng thiết kế, từ đó có thể hình dung ra những điểm cần kiểm tra.
- Tài liệu mô tả chức năng SoC (SoC system specification): đây là tài liệu dùng để mô tả chức năng của toàn bộ các khối chức năng trong SoC. Tài liệu này sẽ giúp các kỹ sư DV hiểu được vị trí của IP trong SoC, cách cấu hình các khối chức năng liên quan.
Tài liệu mô tả yêu cầu từ khách hàng (Customer Requirement Specification): các yêu cầu từ khách hàng có thể bị các kĩ sư RTL Design hiểu sai hoặc thiếu sót, vậy nên các kĩ sư DV cũng phải tham khảo và kiểm tra xem thiết kế hiện tại có phù hợp và đầy đủ những yêu cầu của khách hàng hay không.
Bước 3. Viết tài liệu kiểm tra và lập kế hoạch (create verification specification and verification plan)
Tài liệu kiểm tra (verification specification) được viết bởi kỹ sư DV nhằm thể hiện ý tưởng của người kỹ sư trong việc kiểm tra IP. Một tài liệu kiểm tra thường gồm một số nội dung sau:
- Những mục tiêu cơ bản, chức năng cần kiểm tra
- Phạm vi kiểm tra: kiểm tra ở mức IP hay mức hệ thống.
- Phương pháp kiểm tra: mô tả các phương pháp được dùng để kiểm tra (direct test, random test, formal test).
- Đặc tả môi trường kiểm tra: sơ đồ khối, mô tả các khối chức năng trong môi trường, sự liên kết giữa các khối với nhau …
Bản kế hoạch kiểm tra (verification plan) là một tài liệu chi tiết mô tả kế hoạch và phương pháp để kiểm tra xác minh rằng SOC đáp ứng các yêu cầu chức năng, hiệu suất, và đáng tin cậy.
Một verification plan thường gồm một số nội dung cơ bản sau:
- Danh sách các điểm cần kiểm tra (verification item list): được liệt kê bởi các kỹ sư DV sau khi phân tích các tài liệu thiết kế của IP cũng như system.
- Phương pháp kiểm tra cho từng item: tùy vào từng item mà các kỹ sư DV sẽ lựa chọn phương pháp kiểm tra phù hợp.
- Mô tả cách thức kiểm tra: phần này sẽ thể hiện rõ muốn kiểm tra item này cần phải cung cấp ngõ vào như thế nào, cấu hình các IP liên quan ra sao, quan sát ngõ ra như thế nào, như thế nào thì đạt yêu cầu …
- Phân loại và ưu tiên: tùy vào mức độ quan trọng của từng item mà các kỹ sư sẽ lên kế hoạch xem item nào cần kiểm tra trước, item nào có thể kiểm tra sau.
- Kế hoạch kiểm tra: mỗi item sẽ được lên kế hoạch kiểm tra cụ thể. Việc lên kế hoạch sẽ giúp các kỹ sư DV quản lý tiến độ của mình so với tiến độ của dự án và giúp bộ phận quản lý theo dõi quá trình kiểm tra để có những hỗ trợ phù hợp khi việc trễ tiến độ xảy ra.
Bước 4. Xây dựng môi trường kiểm tra và viết các bộ kiểm tra
Dựa vào verification specification, các kỹ sư DV sẽ bắt đầu xây dựng môi trường kiểm tra (verification environment). Môi trường kiểm tra đóng vai trò quan trọng trong việc đảm bảo rằng IP/SoC đáp ứng các đặc tả và yêu cầu thiết kế.
Dưới đây là các thành phần chính của một môi trường kiểm tra:
- Testbench: là thành phần quan trọng nhất của môi trường, được sử dụng để cung cấp đầu vào, theo dõi hành vi và kiểm tra tính đúng đắn của ngõ ra. Testbench có thể được viết bằng ngôn ngữ mô tả phần cứng như Verilog, System Verilog hoặc VHDL.
- Verification IP (VIP): là các thành phần được thiết kế trước, có thể sử dụng lại, đóng vai các model cho các giao thức hoặc giao diện tiêu chuẩn thường sử dụng trong thiết kế SOC như PCLe, USB, Ethernet, DDR, AMBA … VIP giúp đơn giản hóa quá trình xác minh bằng cách cung cấp các thành phần sẵn có có thể tích hợp vào testbench để kiểm tra các tương tác (giả lập input, kiểm tra output) giữa DUT với các thành phần xung quanh nó.
- Coverage: được sử dụng để theo dõi sự hoàn thiện của quá trình xác minh bằng cách đo lường mức độ mà thiết kế đã được kiểm tra trong quá trình mô phỏng. Các mô hình xác định coverage sẽ được tích hợp vào môi trường kiểm tra trong quá trình xây dựng.
- Môi trường mô phỏng và hệ thống script: các kỹ sư sẽ xây dựng hệ thống script và môi trường mô phỏng để tiến hành các bước biên dịch thiết kế, biên dịch testbench, cung cấp các file preload vào bộ nhớ, xây dựng cây thư mục với đầy đủ các tùy chọn trong quá trình chạy mô phỏng, debug, thu thập kết quả. Mọi thứ sẽ được xây dựng một cách tự động với các hướng dẫn (README) rõ ràng, dễ hiểu giúp những kỹ sư khác có thể dễ dàng tiếp cận và thuận tiện trong quá trình chạy mô phỏng và debug.
Dựa vào mô tả các bước kiểm tra trong verification plan, các kĩ sư DV sẽ bắt đầu viết các bộ kiểm tra (test case). Đây chính là công việc hàm chứa nhiều chất xám nhất của các kĩ sư DV. Test case gồm những phần chính sau:
- Cấu hình IP và các IP liên quan.
- Tạo ra ngõ vào (stimulus) cho DUT.
- Các checker để kiểm tra ngõ ra.
Một testcase tốt phải hội đủ các yếu tố sau:
- Rõ ràng và chi tiết: Mô tả test case một cách rõ ràng và chi tiết để người đọc dễ hiểu. Đặc biệt là cần mô tả cẩn thận các bước thực hiện, dữ liệu kiểm thử, và kết quả mong đợi.
- Đơn giản và cụ thể: Test case nên được viết một cách đơn giản và cụ thể, tránh sự mơ hồ và phức tạp.
- Có thể dùng lại dễ dàng (reuseable): Test case nên được thiết kế sao cho có dễ dàng sử dụngvlại nhiều lần cho các phiên bản sản phẩm khác nhau hoặc trong các vòng kiểm tra tiếp theo.
- Kiểm tra đầy đủ: đảm bảo testcase kiểm tra tất cả các trường hợp có thể xảy ra của ngõ vào. Các tình huống biên (boundary condition, corner case).
- Đầy đủ các checker phù hợp: checker chính là những điểm mấu chốt để đánh giá design đang hoạt động đúng hay sai với tâp đầu vào hiện tại. Viết testcase mà không có checker thì xem như vô nghĩa vì không thể kiểm tra được tính đúng đắn của thiết kế. Kỹ sư DV phải thêm checker phù hợp vào cho tất cả các trường hợp kiểm tra.
Bước 5. Chạy mô phỏng, debug và sửa lỗi
Sau khi testcase đã được viết xong, các kỹ sư DV sẽ tiến hành bước chạy mô phỏng. Bước này ngoài việc biên dịch thiết kế (DUT), nó cũng sẽ biên dịch toàn bộ môi trường, testbench và testcase, giúp phát hiện ra lỗi syntax trong quá trình thiết kế môi trường hoặc viết testcase.
Quá trình chạy mô phỏng nếu có lỗi xảy ra thì các kỹ sư DV phải tiến hành debug (gỡ lỗi). Nếu lỗi này do môi trường hoặc testcase thì kỹ sư DV sẽ tiến hành fix lỗi. Nhưng nếu lỗi này là lỗi thiết kế, các kỹ sư DV sẽ phản hồi lại cho các kỹ sư RTL design để tiến hành fix lỗi.
Quá trình debug đôi khi khá phực tạp, cần kinh nghiệm và sự hiểu biết nhất định về hệ thống nên cần các kỹ sư DV phải có kiến thức rộng về SoC.
Bước 6. Kiểm tra coverage
Coverage sẽ giúp người kỹ sư DV phát hiện ra những điểm mình chưa kiểm tra. Dưới đây là một số ví dụ:
- Một vài dòng code chưa được kiểm tra
- Một điều kiện else-if chưa được kiểm tra
- Một tổ hợp giá trị logic chưa được kiểm tra
- Môt số trạng thái của máy trạng thái chưa được kiểm tra
….
Coverage cũng giúp các kỹ sư RTL design biết được những dòng code không hợp lý và những điều kiện không bao giờ xảy ra được. Nhờ đó các kỹ sư RTL sẽ tối ưu hóa thiết kế của mình để làm cho nó tốt hơn.
Hoàn thành coverage là một điều kiện bắt buộc để có thể chứng mình công việc kiểm tra thiết kế đã hoàn tất.
Bước 7. Review kết quả
Khi mọi công đoạn đã hoàn tất, một buổi review sẽ được tổ chức để review lại tất cả các quá trình trước đó.
- Review verification specification, verification plan để tìm ra những thiếu sót, corener case.
- Review môi trường, testbench
- Review các bộ testcase để kiểm tra viết có đúng trình tự hông, có checker đầy đủ không.
- Review log file, wave form.
Buổi review này thực chất có thể chia nhỏ để review từng phần khác nhau. Có thể sau mỗi công đoạn sẽ tiến hành review để tránh đến cuối dự án mà phải review quá nhiều, dẫn đến không hiệu quả.
4. Làm sao biết được bạn có phù hợp với vị trí kĩ sư kiểm tra thiết kế RTL ?
Hi vọng với những phần mô tả trên, các bạn có thể hình dung được công việc của một kĩ sư kiểm tra xác minh RTL. Vậy câu hỏi được đặt ra là làm sao biết được bạn có phù hợp với vị trí này hay không ? Theo quan điểm của tác giả, các yếu tố để trở thành một kĩ sư kiểm tra thiết kế xuất sắc gồm có:
- Tính cẩn thận, tập trung vào chi tiết.
- Tính siêng năng, ham học hỏi, liên tục cập nhật những công nghệ mới
- Khả năng tư duy logic, giải quyết vấn đề.
- Tính sáng tạo
- Khả năng lập trình
- Khả năng tiếng Anh
Tính cẩn thận và tập trung vào chi tiết sẽ giúp các bạn tránh được những lỗi sai cơ bản (typo mistake/careless mistake). Đối với kĩ sư kiểm tra thiết kế, việc không bỏ sót bug là cực kì quan trọng. Tính cẩn thận sẽ giúp các bạn giảm thiểu được khoảng 50% khả năng bỏ sót bug trong quá trìn kiểm tra.
Tính siêng năng, cần cù, ham học hỏi sẽ giúp các bạn ngày càng hoàn thiện về mặt kĩ năng, ngày càng có nhiều kinh nghiệm để trở nên tốt hơn sau mỗi dự án. Đặc biệt đối với kỹ sư DV, hiểu rõ IP mình kiểm tra là chưa đủ mà còn phải có kiến thức hệ thống sâu sắc, đòi hỏi quá trình tìm tòi lâu dài. Phần này sẽ giúp các bạn giảm được 30% xác suất bỏ sót bug còn lại do thiếu kiến thức về system.
Khả năng tư duy logic giúp bạn có thể suy nghĩ một vấn đề và tiếp thu nhanh hơn, làm việc tránh được nhiều sai sót hơn, giải quyết sự cố nhanh hơn, giúp tăng hiệu suất làm việc.
Tính sáng tạo sẽ giúp bạn có thể nghĩ ra những phương pháp kiểm trả, những corner case, những điều kiện biên (boundary condition), từ đó giúp tìm ra những bug khó phát hiện. Tác giả đánh giá tính sáng tạo sẽ giúp các bạn giảm được 20% xác suất bỏ sót bug còn lại.
Khả năng lập trình: không giống như kỹ sư thiết kế RTL chỉ được dùng những tính năng synthesizable của Verilog, System Verilog, kỹ sư DV được sử dụng tất cả các thính năng của 2 ngôn ngữ trên để xây dựng môi trường, phát triển model, viết testcase. Ngoài ra, kỹ sư DV còn làm việc với rất nhiều ngôn ngữ khác nhau như scripting (C-shell, Perl, Python), C, C++, System C… nên tư duy lập trình là điều rất quan trọng để có thể xây dựng những chương trình tối ưu, ngắn gọn, dễ hiểu.
Khả năng tiếng Anh tốt sẽ giúp bạn giao tiếp tốt hơn với đồng nghiệp, sếp nước ngoài, đọc, viết tài liệu tiếng Anh tốt hơn từ đó sẽ giúp nâng cao kiến thức chuyên ngành nhanh hơn.
Đến đây, chúng ta đã thấy được tầm quan trọng của công việc kiểm tra thiết kế. Để so sánh vui, nếu như kỹ sư RTL Design đóng vai trò như những người lính đánh đông dẹp bắc, là những người hiện thực hóa tính năng bằng việc thiết kế, xây dựng logic, thì kỹ sư DV chính là những vị “thần hộ mệnh” âm thẩm bảo vệ những người lính ấy, đảm bảo chip chạy đúng tính năng, đúng yêu cầu của khách hàng để mang lại sự thành công cho dự án.
5. Làm sao để trở thành một kĩ sư kiểm tra thiết kế RTL?
Để trở thành một kỹ sư kiểm tra thiết kế RTL bạn có thể thực hiện những cách sau:
- Học đại học chuyên ngày kỹ thuật điện tử, kỹ thuật máy tính và đăng ký chuyên ngành đào tạo thiết kế vi mạch và làm đồ án luận văn liên quan đến kiểm tra thiết kế số.
- Tuy kỹ sư DV không làm RTL Design nhưng cũng nên trang bị những kiến thức cơ bản về mạch số, hệ thống số, kiến trúc máy tình, kỹ thuật số để bổ trợ cho công việc.
- Nắm vững các tính năng của ngôn ngữ mô tả phần cứng HDL, đặc biệt là các tính năng hướng đối tượng của System Verilog.
- Luyện tập, thực hành các ngôn ngữ lập trình và scripting. Tác giả khuyến khích ít nhất nên thành thạo C và Python.
- Tham gia vào các diễn đàn, hội nhóm về vi mạch để học hỏi kinh nghiệm và cập nhật những kiến thức mới.
- Tham gia một số khóa học thiết kế vi mạch cơ bản và nâng cao về kiểm tra vi mạch tại các trung tâm đào tạo vi mạch uy tín, từ đó tích lũy kinh nghiệm thực chiến thông qua các dự án và bài tập thực tế.
Lời kết: kiểm tra xác minh RTL – Design Verification là một công việc rất thú vị và thử thách. Việc trở thành một kỹ sư kiểm tra xác mình RTL đòi hỏi sự chăm chỉ và kiên trì. Hãy liên tục cập nhật kiến thức, thực hành thường xuyên, và không ngần ngại đối mặt với thách thức để phát triển sự chuyên nghiệp của bạn trong lĩnh vực này.