Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
wafer.jpg

Khái niệm SystemVerilog và vì sao sử dụng systemC?

E-mail Print PDF

system Verilog is a super set of Verilog and mainly target for verification. It allows more construct that are not supported in Verilog/VHDL like assertion, coverage and random constraint manager (for testbench generation).

EDA tools are needed to take advantage of these features and most free utilities will not cover these features in extend. AVM (Advance Verification Methodology) allows the designers to take advantage of reusing the techniques that were invented for exhausted verification. Using these techniques, one can write a verification subsystem at the higher level of abstraction:

1) Driver (stimulus) - Combine various interface into a compact interface so it can be described at transaction level. This transaction level will then be use through out the verification flow.
2) Monitor (observation) - Assertion points to check the actual versus expected data. The monitor information will be deposited into one unique database so it can be used for scoreboard and coverage report (EDA involves in this process)
3) Random constraint manager - systemV allows the use of random data generation. The constraint manager is use to limit the randomness of the data so it can be applicable to the specific application test data.

To verify the systemV code, one needs a simulator and good simulator will allow the user to take advantage of all the features in this language. Verification is not a trivial task so it becomes a "hot" career for any digital hardware designer who has advance software skill.

Yes, RTL designer is still safe for may be another 5 years with current adoption rate of HLS (High Level Synthesis) but I saw a faster and more solid traction on HLS last year so the time could be shorter.

 

Ngôn ngữ SystemVerilog là tập hợp mẹ của Verilog và chủ yếu dùng trong việc thẩm tra/xác minh code (verification). Nó cho phép có thêm các cấu trúc mà ngôn ngữ VHDL/Verilog không hỗ trợ ví dụ như assertion, coverage và random constraint manager (dùng trong việc tạo ra các testbench). Chúng ta cần các công cụ thiết kế tự động EDA (Electronic Design Automation) để tận dụng hết các ưu điểm của các cấu trúc này và hầu hết các công cụ free không hỗ trợ nhiều. AVM (Advance Verification Methodology - Phương pháp thẩm định bậc cao) cho phép người thiết kế tận dụng các kĩ thuật mà được thiết kế cho việc xác minh kiệt quệ (exhausted verification, exhausted verification có thệ hiệu là việc kiểm tra hết tất cả các trường hợp có thể xảy ra). Sử dụng các phương pháp này, người ta có thể viết một hệ thống xác minh ở mức cao hơn (abstraction level nghĩa là các mức trừu tượng: Gate Level, RTL (Register Transfer Level), Transaction Level, Algorithm level ... khi thiết kế ở mức cao hơn, con người ta tạm quên/ không quan tâm lớp dưới được thiết kế như thế nào. Giống như bạn viết Assembly code thì phải biết các instruction của máy, bạn viết ở mức cao hơn như C/C++ thì bạn không quan tâm các lệnh của bạn được thực hiện thế nào, bạn dựa vào compiler, làm việc ở mức cao hơn giúp tăng năng suất) 

1) Driver (các tác nhân - stimulus ) - kết hợp nhiều giao diện thành một giao diện gọn nhẹ để mà có thể được miêu tả ở mức giao dịch (transaction level). Mức giao dịch này sau đó được dùng trong suốt quá trình thẩm tra/xác minh.
2) Monitor (observation) - Quan sát và theo dõi. Các điểm xác nhận (assertion point) được dùng để so sánh giữa kết quả thực sự và kết qua mong đợi. Nếu bạn nào biết về C++ thì chắc sẽ biết lệnh assert. 
Ví dụ khi bạn viết assert(T>10) thì khi trong thời gian chạy nếu T<10 thì chương trình sẽ in ra assertion failed chỗ nào trong code của bạn. Các kết quả sẽ được ghi vào một cơ sở dữ liệu (database) để sau đó được sử dụng trong các bảng điểm và bảng báo cáo về độ bao phủ (coverage report, độ bao phủ nghĩa là các testpoint của bạn bao phủ được bao nhiêu trường hợp, coverage=100% đồng nghĩa với exhausted verification). (EDA cần support những điều này)

3) Random constraint manager - System Verilog cho phép tạo ra data ngẫu nhiên (random). Cái gọi là constraint manager được dùng để giới hạn mức độ ngẫu nhiên của data để mà có thể áp dụng tạo data cho một ứng dụng chuyên biệt. 

Để xác minh SystemVerilog code, chúng ta cần một chương trình mô phỏng (simulator) và một chương trình mô phỏng tốt sẽ cho phép tận dụng được hết các tính năng của ngôn ngữ này. Việc xác minh chip không phải là chuyện đơn giản cho nên nó trở thành một nghề hot cho các kĩ sư đang thiết kế phần cứng số và có kĩ năng lập trình giỏi. 

Vâng, thiết kế RTL sẽ vẫn an toàn trong vòng 5 năm nữa với tốc độ chấp nhận hiện nay của HLS (High-level Synthesis, Tổng hợp mức cao - thường hiểu là cao hơn RTL và thường hiểu là cao hơn VHDL và Verilog) nhưng năm ngoái tôi thấy sức kéo của HLS nhanh hơn và mạnh hơn cho nên thời gian (mà RTL sẽ chết) có thể sẽ ngắn hơn. (Trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai mọi người thông cảm).

Why's systemC?

System modeling uses lots of method to describe depend on the applications but most common method is ANSI C/C++. C/C++ is great for software tasks (sequential execution) but not applicable for hardware due to lacking on concurrency. systemC is a subset of C++ (template class) and it introduces the concurrency using multi-thread (each thread is used for each process) which can be used to easier describe the parallel processes.

There are several ways to use systemC to describe the hardware process:
1) Untime - Only involve SC_THREAD to allow modules to run concurrently.
2) Untime w/ cycle accurate interface - The body of the module is untime (no cycle accurate) but the interface is cycle accurate. This style is mostly use with HLS (High Level Synthesis). The cycle accurate interface is used to introduce time into the system without detail hardware architecture of the module.
3) Cycle accurate - This style is equivalent to RTL (VHDL/Verilog)

The advantage of systemC over VHDL/Verilog in system or subsystem verification is "speed" and seemless integration with software models. In traditional RTL flow, in order to use C/C++ as the test bench (software models), one must use the advance simulator to establish a communication channel between RTL and C/C++ kernels. This channel is a performance hog (very slow and depend on how much information to come across). RTL is an event base language so it is also much slower than systemC with equivalent hardware. With systemC hardware models, there is no communication channel between hardware and software models. This allows drastic performance improvement in verification.

vì sao sử dụng systemC?

Việc mô hình hóa hệ thống sử dụng rất nhiều phương thức để mô tả tùy vào những ứng dụng cụ thể nhưng phương pháp phổ biến nhất là ANSI C/C++. 

C/C++ là công cụ rất tốt cho những tác vụ về phần mềm (tác vụ được thực hiện tuần tự) nhưng không thích hợp cho ứng dụng phần cứng do việc thiếu sót về đa tiến trình (hoạt động song song).

SystemC là 1 nhánh con của C++ ( 1 lớp mẫu). Nhiệm vụ chính là để đưa ra những mô hình đồng tiến trình hoạt sử dụng mô hình multi-thread (mỗi thread được sử dụng cho mỗi process (tiến trình)), bằng cách này thì việc mô tả các hoạt động song song một cách dễ dàng và thích ứng hơn.

Có một vài cách để sử dụng systemC để mô tả hoạt động cho những khối phần cứng:

1)Untime (không xét thời gian) chỉ liên quan đến các SC_THREAD để cho phép các modules chạy đồng thời.
2)Untime với mặt giao động (interface) chính xác về chu kỳ (cycle accurate) – Khối hoạt động không lệ thuộc vào thời gian nhưng mặt giao đồng của nó thì phải đảm bảo chu kỳ chính xác để liên lạc với những khối khác. Kiểu mô tả này được sử dụng khá nhiều trong tổng hợp hạng cao (HLS, High level Synthesis). Việc định nghĩa chính xác về số chu kì ở mặt giao động được giới thiệu dưới hình thức này mà không cần phải biết chi tiết về thời gian của mặt phần cứng của hệ thống.
3)Chính xác theo chu kì máy - Mô hình này thì tương đương với mô hình RTL trong VHDL/Verilog.

Ưu điểm của systemC đối với VHDL/Verilog trong việc thiết kế hệ thống hoặc kiểm tra hệ thống là thời gian để mô tả và kiểm soát và sự kết hợp với khối phần mềm cũng đơn giản hóa. Đối với mô hình RTL truyền thống để sử dụng C/C++ như là công cụ test (mô hình phần mềm), phải sử dụng công cụ mô phỏng chuyên dụng để tạo 1 kết nối giữa mô hình RTL và nhân C/C++.Kênh kết nối này là 1 điểm gãy về mặt hiệu quả hoạt động( rất chậm và bị phụ thuộc vào lượng thông tin chuyển tải). RTL là 1 mô hình ngôn ngữ theo kiểu event(sự kiện) nên nó cũng chậm hơn so với systemC với cùng 1 phần cứng. Với mô hình phần cứng sử dụng systemC, không cần kênh kết nối giữa phần mềm mô hình với phần cứng. Việc này tăng hiệu quả rất nhiều trong việc kiểm tra.(Trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai mọi người thông cảm).

 

 

 

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 

Last Updated ( Thursday, 13 August 2015 14:03 )  

Related Articles

Chat Zalo