Nguyên văn bởi jefflieu
Xem bài viết
Thông báo
Collapse
No announcement yet.
SystemVerilog và SystemC
Collapse
This is a sticky topic.
X
X
-
-
- Nếu như ở Việt Nam, thì đi theo hướng SystemC (mô phỏng hệ thống) hay hướng SystemV (system verification) có lợi hơn?
- Anh đánh giá HLS như thế nào? Các phần mềm dịch thẳng từ SystemC/SystemV --> netlist có hiệu quả bằng HDL không?
Leave a comment:
-
Như vậy khi mô phỏng (simulation) bằng SystemC, phần mềm mô phỏng (simulator) sẽ phải đọc hết các model có ruột/lõi bằng RTL cho đến C++? Miễn là các interface tương thích thông qua các SystemC wrapper?
Em hiểu sơ sơ rồi.
Như vậy có vẻ việc system modeling (mô phỏng hệ thống) này làm bằng SystemC có lợi hơn so với SystemVerilog?
Leave a comment:
-
Nguyên văn bởi jefflieu Xem bài viếtÝ em chỉ là model để simulation/verification.
Hy vọng là đã trà lời được câu hỏi của Jeff :-)
khối RTL cũng cần phải có systemC wrapper trước khi cấu kết với những systemC module khác
Leave a comment:
-
Ý Jeff muốn hỏi về cấu tạo phần cứng của CPU hay chỉ là modeling cho kiểm duyệt (simulation)?
Thường thì mấy công ty mua CPU model từ EDA tool rồi liên kết với những bộ phận sáng chế của họ để xác nghiệm. Trước khi đi qua layout, những cái CPU model sẽ được thay thế bởi gate level netlist. Những cái CPU model này rất mắc tiền vì máy hãng EDA biết là khách hàng của họ muốn dùng dạng thiết kế này để chuẩn đoán phần mềm và phần cứng cùng một lượt trước khi chuyển sáng chế qua fabrication (ASIC flow). Ở bên FPGA thì không cần thiết lắm vì có thể thay đổi dễ dàng và ít tốn kém hơn là ở bên ASIC. Đôi khi cũng cần cách thiết kế (flow) này nếu design quá phức tạp. Tra cứu (debug) ở simulation vẫn dễ dàng hơn nhiều là ở trong lab.
Leave a comment:
-
Anh Tony cho em hỏi, ví dụ như cần mô phỏng một hệ thống gồm có CPU và các Peripheral.
Thì con CPU sẽ được mô phỏng như thế nào? Trong ruột có mô phỏng được không hay chỉ mô phỏng đúng tới các giao diện (interface).
Thanks anh
Leave a comment:
-
Với sự giúp đỡ của 1 bạn trên diễn đàn này, tôi đã dịch bài viết bằng tiếng Anh trước đây thành tiếng Việt. Có thể không được hoàn hảo cho lắm, xin các bạn chỉ giẫn thêm.
--------------------------------
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.
Leave a comment:
-
Hiện giờ tôi bị cảnh cáo nhưng kô biết là vì viết bằng tiếng Anh hay tiếng Việt kô dấu nên xin tạm thời ngưng viết thêm về đề tài này.
tvd
Leave a comment:
-
Nguyên văn bởi tonyvandinh Xem bài viếtOK, let's talk about systemV first since it is closer to RTL (Verilog) than systemC.
systemV 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.
systemC -> in later post.
tvd
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.
Leave a comment:
-
Nguyên văn bởi jefflieu Xem bài viếtVì đây là diễn đàn Tiếng Việt, đa số mọi người sử dụng Tiếng Việt để viết bài và trao đổi, mình xin mạn phép dịch bài viết của anh tonyvandinh. (trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai, có gì thắc mắc xin các bạn cứ hỏi và thảo luận):
--------
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.
Cam on Jeff da dich lai. Hy vong la toi co the hoc them nhung tu cua ky thuat cao de dien ta bang tieng Viet.
Uoc vong cua toi la mot ngay nao do toi co the ve VN va cong hien nhung kinh nghiem va hieu biet cua minh de hy vong rang VN se co co hoi de theo duoi nhung nuoc lang gieng. 1995-1999, toi co co hoi de lam viec tai A Chau va da den nhung nuoc nhu Dai Han, Dai Loan, Trung Hoa, An Do va van van. Toi cam thay thuong tiec cho que huong VN minh. Chi vi chien tranh ma da di thut lui vao khoang 20 nam. Toi hy vong la VN se co co hoi de nhay buc thi moi theo kip trong vong 10 nam toi.
Leave a comment:
-
One clarification. RTL will not be gone but less emphasized just like gate level.
Leave a comment:
-
Nói chung vẫn chưa hình dung được :"> ...
Haiz chác phải vọc thử mới biết được... hồi đó giờ kiểm tra code bằng cách nhìn waveform không àh :">
Leave a comment:
-
Vì đây là diễn đàn Tiếng Việt, đa số mọi người sử dụng Tiếng Việt để viết bài và trao đổi, mình xin mạn phép dịch bài viết của anh tonyvandinh. (trong lúc dịch không thể tránh khỏi những hiều lầm/hiểu sai, có gì thắc mắc xin các bạn cứ hỏi và thảo luận):
--------
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.
Leave a comment:
-
OK, let's talk about systemV first since it is closer to RTL (Verilog) than systemC.
systemV 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.
systemC -> in later post.
tvd
Leave a comment:
Về tác giả
Collapse
Email minh trực tiếp nếu bạn cần download tài liệu gấp
Tìm hiểu thêm về jefflieu
Bài viết mới nhất
Collapse
-
bởi dinhthuong92Cảm ơn bác đã chia sẻ nhiều thí nghiệm thực tế.
Về mạch cân bằng cells pin thì theo cá ngân em, nó chỉ có chức năng bảo vệ quá xả và quá nạp cho các cell thôi. Tức là bất kì cell nào trong khi xả mà có áp thấp nhất và bằng...-
Channel: Hướng dẫn sử dụng diễn đàn
18-04-2024, 21:07 -
-
bởi jigokushoujoCó anh chị nào có thể cho em 1 mạch chống ngược cực, chập mạch, khi bị chạm mạch hay ngược cực thì nó sẽ tự động ngắt nguồn,khi không còn chạm thì nó sẽ đóng nguồn lại bình thường. Em có dùng nguồn 12V 75A từ ắc quy . Em cần chụi...
-
Channel: Điện tử dành cho người mới bắt đầu
18-04-2024, 18:24 -
-
bởi chinhnguyen9Tôi nghi ngại về sự hiện diện của điện trở 0,1R trong mach test có thể làm sai lạc và méo mó hoạt động của mạch. Sau khi tháo bỏ điện trở trên test lại thì thấy hoạt động cân bằng tích cực hơn rất nhiều và sờ thấy các most fet của...
-
Channel: Hướng dẫn sử dụng diễn đàn
18-04-2024, 15:01 -
-
bởi chinhnguyen9Test module cân bằng chủ động kiểu Flying Capacitor Balancing 4s 6A TQ
Hình thức board mạch có vẻ ổn. Hình 1 mặt trên và mặt dưới
Hình 2
Lắp bài test với 3 cell 32-650 (4000mAh) với các mức điện áp trong dòng thứ 2 cell số 5 là pin lion 10Ah để tạo độ...-
Channel: Hướng dẫn sử dụng diễn đàn
18-04-2024, 11:26 -
-
bởi chinhnguyen9Hính 1 Sản phẩm board cân bằng acquy Minh Quang
Hình 2 Sơ đồ nguyên lý hoạt động
Hình 3 Sơ đồ đấu dây
Dùng 2 khối pin 32-650 khối 1 4s=13V và khối 2 5s =16V bắt nối tiếp, đấu dây đen B0 vào âm, nguồn B1 vào cọc 13V, và B2 vào cọc 29V,...-
Channel: Hướng dẫn sử dụng diễn đàn
18-04-2024, 10:51 -
-
bởi chinhnguyen91- Sơ khai là mạch cân bằng thụ động do hiệu quả của mạch này là rất kém nên ta vứt nó vào quá khứ.
2- Mạch cân bằng chủ động, so áp liền kề gồm 2 nhánh: dùng từ trường và dùng điện tích
3- Mạch cân bằng chủ động toàn nhóm.(flying capacitor balancing)
Trong mạch cân bằng chủ...-
Channel: Hướng dẫn sử dụng diễn đàn
16-04-2024, 08:48 -
-
bởi saovietnhat
Quyền Lợi:
- Mức lương thỏa thuận.
- Được đào tạo về kỹ năng làm việc trong môi trường năng động và làm việc nhóm
- Được đào tạo chuyên sâu về bán hàng, kinh doanh hiệu quả
- Tham gia BHYT, BHXH, BHTN,...-
Channel: Tuyển dụng
13-04-2024, 15:46 -
-
bởi Trọng TrangTiện đây các anh cho em hỏi: Khi transistor bị nóng thì dùng tản nhiệt. mặc dù đã có tản nhiệt nhưng bản mạch có bị nóng lên do transistor truyền nhiệt vào bản mạch không? Em cảm ơn các anh.
-
Channel: Điện tử dành cho người mới bắt đầu
10-04-2024, 22:48 -
Leave a comment: