Track B: SystemVerilog
Kiểu dữ liệu, interface, OOP, randomization, concurrency, SVA và functional coverage.
B1: Data types
Cần học trước: A7 Hành vi & ngữ nghĩa mô phỏng.
- Logic, bit và int: đừng làm mất X trước khi checker nhìn thấyĐang tải tiến độ
- Enum và typedef: tên kiểu không thay cho kiểm dữ liệuĐang tải tiến độ
- Struct và union: gom field hay nhìn lại cùng một nhóm bitĐang tải tiến độ
- String trong testbench: chỉ số byte, bản sao và lỗi parse bị cheĐang tải tiến độ
- Casting: đổi biểu diễn khác với kiểm giá trị có được phépĐang tải tiến độ
B2: Arrays & collections
Cần học trước: B1 Data types.
- Packed và unpacked: cùng số bit chưa phải cùng cách đánh chỉ sốĐang tải tiến độ
- Dynamic array: resize có giữ dữ liệu hay tạo lại từ đầuĐang tải tiến độ
- Associative array: key tồn tại, giá trị bằng0 và thứ tự duyệtĐang tải tiến độ
- Queue: thao tác đầu/cuối và thứ tự dữ liệu cần được kiểmĐang tải tiến độ
- Array methods: tìm value, tìm index và cộng đúng widthĐang tải tiến độ
- Streaming: đảo byte khác đảo bit và khác shiftĐang tải tiến độ
- Chọn collection cho scoreboard: ordering, ID và dữ liệu còn thiếuĐang tải tiến độ
B3: Procedural & packaging
Cần học trước: B1 Data types.
- Always_comb, always_ff và always_latch: nói rõ phần cứng định mô tảĐang tải tiến độ
- Unique và priority: kiểm điều kiện chọn nhánh, không sửa input giúp bạnĐang tải tiến độ
- Vòng lặp SV: foreach theo shape, break và continue theo điểm đặtĐang tải tiến độ
- FSM với enum: chuyển trạng thái theo hợp đồng và kiểm không làm mất XĐang tải tiến độ
- Subroutine SV: ref nhìn thấy ngay, output chép khi trả vềĐang tải tiến độ
- Package và $unit: dùng chung định nghĩa mà không nhầm scopeĐang tải tiến độ
- Named block và final: thoát đúng phạm vi, kiểm đúng lúc kết thúcĐang tải tiến độ
B4: Interface & TB timing
Cần học trước: B3 Procedural & packaging, A7.scheduling.
- Interface và modport: gom tín hiệu, giữ rõ ai được ghiĐang tải tiến độ
- Interface nâng cao: tham số, nhiều lane và kết nối theo tênĐang tải tiến độ
- Clocking block và skew: đọc mẫu nào, lái tín hiệu lúc nào?Đang tải tiến độ
- Virtual interface: class truy cập đúng instance, đổi binding có kiểm traĐang tải tiến độ
- Program block: hiểu Reactive và giới hạn bằng chứng của simulatorĐang tải tiến độ
- SV scheduling: một time slot có thể cần nhiều lượt Active và NBAĐang tải tiến độ
- Plusargs và file I/O: kiểm cấu hình trước khi dùng dữ liệuĐang tải tiến độ
B5: OOP
Cần học trước: B3 Procedural & packaging.
- Class handle và object: hai tên có thể cùng sửa một transactionĐang tải tiến độ
- Constructor: tạo object ở trạng thái dùng được, không chỉ gọi newĐang tải tiến độ
- Static, this và const: xác định thứ gì dùng chung và thứ gì bị giữ cố địnhĐang tải tiến độ
- Shallow và deep copy: độc lập ở tầng nào của transaction?Đang tải tiến độ
- Inheritance và super: dùng lại hành vi mà vẫn thấy phần baseĐang tải tiến độ
- Virtual dispatch và cast: kiểu handle khác với kiểu objectĐang tải tiến độ
- Abstract class và pure virtual: hợp đồng chung cho nhiều implementationĐang tải tiến độ
- Access control, extern và forward class: tổ chức API có ranh giớiĐang tải tiến độ
- Parameterized class: mỗi specialization có type và trạng thái static riêngĐang tải tiến độ
- Class và struct: copy giá trị không tự clone object nằm trong fieldĐang tải tiến độ
- Callback: thay hành vi bằng object đăng ký và kiểm đúng thứ tự gọiĐang tải tiến độ
B6: Randomization
Cần học trước: B5 OOP.
- Rand và randc: chu kỳ nhỏ khác với một mẫu ngẫu nhiên có thể lặpĐang tải tiến độ
- Randomize và constraints: inside, dist, implication, inline withĐang tải tiến độ
- Implication, if-else và foreach: ràng buộc quan hệ thay vì chạy lệnh gánĐang tải tiến độ
- Solve-before: cùng tập nghiệm, khác cách chọn mẫuĐang tải tiến độ
- Soft, inline và mode: mặc định khác với luật bắt buộcĐang tải tiến độ
- Unique constraint: khác nhau trong một mẫu, không phải qua mọi lần gọiĐang tải tiến độ
- Pre/post_randomize và randcase: thứ tự, trạng thái và trọng sốĐang tải tiến độ
- Array randomization: kiểm shape, phần tử và tổng riêng biệtĐang tải tiến độ
- Memory partition constraints: biên, chồng lấp và độ rộngĐang tải tiến độ
- Debug randomization: khoanh vùng xung đột trước khi đổi seedĐang tải tiến độ
B7: Concurrency & IPC
Cần học trước: B4 Interface & TB timing, B5 OOP.
- Fork/join: đợi kết quả, thu dọn nhánh và giữ đúng phạm vi hủyĐang tải tiến độ
- Process handle: điều khiển đúng thread và giữ riêng giới hạn await/suspendĐang tải tiến độ
- Named event: notification, triggered state và các case tool chưa hỗ trợĐang tải tiến độ
- Semaphore: đặt trước số key và kiểm cân bằng resourceĐang tải tiến độ
- Mailbox: backpressure, FIFO và identity của transaction được gửiĐang tải tiến độ
B8: SVA
Cần học trước: B4 Interface & TB timing, A7.scheduling.
- Assertion: kiểm gì, kiểm lúc nào và thế nào mới là bằng chứng?Đang tải tiến độ
- SVA sampling: property thấy mẫu trước cạnh, log có thể thấy giá trị mớiĐang tải tiến độ
- SVA sequence: đếm tick, cửa sổ match và repetition trước khi viết propertyĐang tải tiến độ
- Implication |-> và |=>: mỗi tick một attemptĐang tải tiến độ
- SVA operators: cùng start, cùng endpoint hay giữ điều kiện suốt sequence?Đang tải tiến độ
- Hàm sampled: bit nào đổi, lịch sử ở clock nào và log đang thấy gì?Đang tải tiến độ
- Local variables trong SVA: giữ dữ liệu riêng cho các attempt chồng lấnĐang tải tiến độ
- Disable iff: hủy nghĩa vụ đang chờ và phân biệt với gatingĐang tải tiến độ
- Sequence có tham số: tái sử dụng mẫu thời gian, hiểu endpoint và đệ quyĐang tải tiến độ
- Multiclock SVA: quan hệ giữa các clockĐang tải tiến độ
- Bind checker: đúng target, đúng tham số và đúng tín hiệuĐang tải tiến độ
- assume/cover/expectĐang tải tiến độ
B9: Functional coverage
Cần học trước: B5 OOP, B4 Interface & TB timing.
- Code coverage và functional coverageĐang tải tiến độ
- Covergroup và coverpoint: tổ chức việc lấy mẫuĐang tải tiến độ
- explicit/ignore/illegalĐang tải tiến độ
- transition binsĐang tải tiến độ
- Cross coverage: kết hợp các điểm quan sátĐang tải tiến độ
- options, methods, system tasksĐang tải tiến độ
- Coverage closure: tìm và đóng lỗ hổng kiểm chứngĐang tải tiến độ
B10: DPI & misc
Cần học trước: B3 Procedural & packaging.
- DPI-C: kết nối SystemVerilog với C/C++Đang tải tiến độ
- Macro, include và phạm vi biên dịchĐang tải tiến độ