Viết RTL, nộp bài, xanh hết các case
Mỗi đề có 6–10 case, chạy bằng mô phỏng thật trên máy chấm. Bài chỉ tính là đúng khi mọi case đều xanh. Tích điểm để lên hạng từ Sắt đến Thách đấu.
HẠNG CỦA BẠN
Đang tải…
– điểm
- Đã giải
- –
- Chuỗi ngày
- –
- AC ngay lần đầu
- –
THỬ THÁCH HÔM NAY
Đang tải…
Đề luyện tập
- Hiệu tuyệt đối không dấu: (a - b < 0) không bao giờ đúngDễtối đa 30
- Bộ cộng tham số hoá: cờ nhớ và cờ tràn đúng với mọi độ rộng, kể cả W = 1Dễtối đa 30
- Sửa ALU: latch ẩn và danh sách nhạy thiếuDễtối đa 30
- Trung bình 4 số: bẫy độ rộng biểu thứcDễtối đa 30
- Barrel shifter 8 bit: SLL, SRL, SRA, ROLDễtối đa 30
- Cộng BCD hai chữ số: 9 + 9 và chỉnh +6Dễtối đa 30
- Phát hiện sườn không báo giả sau resetDễtối đa 30
- Phát hiện sườn lên/xuống (ngõ ra thanh ghi)Dễtối đa 30
- Chuyển đổi nhị phân ↔ mã GrayDễtối đa 30
- Bộ đếm Johnson 4 bit và giải mã phaDễtối đa 30
- Đếm số bit 0 đứng đầu (leading zero count)Dễtối đa 30
- Max của 4 số có dấu kèm chỉ số: dây trung gian và hoàDễtối đa 30
- Đồng hồ phút:giây BCD (00:00 → 59:59)Dễtối đa 30
- MUX 4:1 có tham số độ rộngDễtối đa 30
- Sửa đường trễ và cặp hoán đổi viết bằng blockingDễtối đa 30
- Kiểm tra one-hot và lấy chỉ số bitDễtối đa 30
- Đếm số bit 1 (popcount) có tham sốDễtối đa 30
- Bộ mã hoá ưu tiên 8→3Dễtối đa 30
- Kéo dài xung có kích lại (retrigger), tham số N tuỳ ýDễtối đa 30
- PWM 8 bit với thanh ghi duty đệm (shadow register)Dễtối đa 30
- FSM Mealy phát hiện 1101: ngõ ra cùng nhịp và trạng thái khi gặp 111Dễtối đa 30
- Thanh ghi dịch đa năng (giữ, dịch trái, dịch phải, nạp song song)Dễtối đa 30
- Phương thức mảng: find, unique, sort, sum withDễtối đa 30
- Đếm tần suất bằng mảng kết hợp khoá stringDễtối đa 30
- Enum giá trị thưa: next(), $cast và cast tĩnh không kiểm traDễtối đa 30
- Bug hunt: pre_randomize, post_randomize, super và tên constraint bị cheDễtối đa 30
- Sửa queue tại chỗ: xoá trong lúc duyệt, khử trùng, xoay vòngDễtối đa 30
- Ràng buộc cho gói tin: khoảng [a:b], kích thước mảng và & thiếu ngoặcDễtối đa 30
- Danh sách ID không trùng: ràng buộc từng cặp, không chỉ phần tử kề nhauDễtối đa 30
- randc: hoán vị ngẫu nhiên, và vì sao đối tượng mới làm hỏng chu kỳDễtối đa 30
- Viết mô hình tham chiếu cho arbiter round-robinDễtối đa 30
- Class stack có giới hạn độ sâu (queue)Dễtối đa 30
- Toán tử streaming: đảo byte, đảo bit, gói và tách mảngDễtối đa 30
- So sánh số phiên bản: "1.10" > "1.9" nhưng chuỗi nói ngược lạiDễtối đa 30
- Mã nhiệt kế sang nhị phân, phát hiện bọt (bubble)Dễtối đa 30
- Theo dõi giá trị lớn nhất và lớn nhì của một luồng dữ liệuDễtối đa 30
- Đếm số bit 1 trong cửa sổ trượt 8 bitDễtối đa 30
- ALU 8 bit với cờ C, V, Z, NVừatối đa 60
- Nhị phân 8 bit → BCD 3 chữ số (double dabble)Vừatối đa 60
- Bộ dự đoán rẽ nhánh 2 bit (bảng 16 bộ đếm bão hoà)Vừatối đa 60
- CAM 8 mục: tìm kiếm theo nội dung trong một nhịpVừatối đa 60
- Bộ đếm có nạp, cho phép và cờ trànVừatối đa 60
- CRC-16/MODBUS theo byte: đa thức phản chiếu, LSB trước, khởi tạo 0xFFFFVừatối đa 60
- CRC-8 nối tiếp từng bit (đa thức 0x07)Vừatối đa 60
- Chống dội phím (debounce) có tham sốVừatối đa 60
- Chia cho 10 không dùng phép chia: nhân với hằng số kỳ diệuVừatối đa 60
- FSM: dòng bit nối tiếp có chia hết cho 3?Vừatối đa 60
- FIFO đầy mà vừa đọc vừa ghi: không mất băng thôngVừatối đa 60
- FSM one-hot an toàn: tự hồi phục từ trạng thái cấmVừatối đa 60
- GCD tuần tự (Euclid bằng phép trừ): đầu vào 0 làm treo mạchVừatối đa 60
- Mã Hamming(7,4): mã hoá và sửa lỗi 1 bitVừatối đa 60
- Cổng clock không glitch (integrated clock gating)Vừatối đa 60
- Giải mã immediate RISC-V: I, S, B, U, JVừatối đa 60
- LFSR 8 bit chu kỳ cực đại, có nạp seedVừatối đa 60
- Dãy bit 1 liên tiếp dài nhất trong một từ 16 bitVừatối đa 60
- MAC có dấu, pipeline 3 tầngVừatối đa 60
- Nhân số có dấu với số không dấu: $signed(b) cũng saiVừatối đa 60
- Bộ đếm modulo N với N đổi lúc đang chạyVừatối đa 60
- Ghép 4 byte thành từ 32 bit, có tín hiệu lastVừatối đa 60
- Phát hiện mẫu 4 bit cấu hình được, chế độ chồng lấn / không chồng lấnVừatối đa 60
- Pipeline 3 tầng có stall và flush: valid phải đứng cùng dữ liệuVừatối đa 60
- Bộ chuyển song song – nối tiếp 8 bit, khung nối liền không hởVừatối đa 60
- Tree-PLRU cho cache 4 đường: bit chỉ ra xa, đừng chạm nửa kiaVừatối đa 60
- Nhân Q0.8: khi hằng có kích thước làm mất cả tíchVừatối đa 60
- RAM đồng bộ 32 bit có byte enableVừatối đa 60
- Register file 2 cổng đọc, 1 cổng ghi, x0 = 0 và bypassVừatối đa 60
- Mã hoá ưu tiên xoay vòng: tìm bit 1 đầu tiên từ vị trí startVừatối đa 60
- Làm tròn Q8.8 về số nguyên: half-to-even và số âmVừatối đa 60
- Bộ đồng bộ reset: assert bất đồng bộ, deassert đồng bộVừatối đa 60
- Chia theo RISC-V M: có dấu, không dấu, và chia cho 0Vừatối đa 60
- Cộng/trừ bão hoà có dấu 8 bit: bẫy tràn và -(-128)Vừatối đa 60
- SECDED (8,4): sửa 1 lỗi, phát hiện 2 lỗi, và lỗi ở chính bit parityVừatối đa 60
- FSM Moore phát hiện chuỗi 1011 (chồng lấn)Vừatối đa 60
- Bộ dịch 16 bit: khi nào >>> lại là dịch logic?Vừatối đa 60
- Bug hunt: hướng đối số, kế thừa hướng và phép chia nguyênVừatối đa 60
- Checksum Internet (RFC 1071): bẫy byte có dấu và cộng vòngVừatối đa 60
- Bug hunt OOP: biến che thuộc tính, static, clone và super.newVừatối đa 60
- Chèn lỗi bằng constraint_mode và rand_mode: tắt cái gì, giữ cái gìVừatối đa 60
- Covergroup thật: bin[] hay bin, ignore_bins, cross và phần trăm tổngVừatối đa 60
- Tự viết mô hình coverage: biên bin, chuyển tiếp và phần trămVừatối đa 60
- Deep copy và so sánh gói tin (handle lồng nhau)Vừatối đa 60
- So sánh sâu hai đối tượng: handle, null và đối tượng lồng nhauVừatối đa 60
- Event và race cùng thời điểm: @ev hay wait(ev.triggered)Vừatối đa 60
- fork trong vòng for: bắt nhầm biến lặpVừatối đa 60
- Timeout bằng fork/join_any và disable fork an toànVừatối đa 60
- Phân tích chuỗi cấu hình key=value bằng phương thức stringVừatối đa 60
- Danh sách liên kết đơn: đảo tại chỗ và xoá theo giá trịVừatối đa 60
- Ma trận bằng mảng động hai chiều: chuyển vị và nhânVừatối đa 60
- Pipeline giữa các thread bằng mailboxVừatối đa 60
- Map giữ thứ tự chèn: foreach trên mảng kết hợp không theo thứ tự bạn nghĩVừatối đa 60
- Struct packed và union: trường đầu tiên là bit cao nhấtVừatối đa 60
- Class tham số hoá theo kiểu: hàng đợi có giới hạn bounded_q #(T, N)Vừatối đa 60
- Hàng đợi ưu tiên ổn định (stable priority queue)Vừatối đa 60
- Phân bố của randomize: solve…before, := và :/Vừatối đa 60
- Chia một tổng thành các phần: sum() của mảng 8 bit chỉ có 8 bitVừatối đa 60
- Mô hình ADC bằng real: int'() làm tròn, $rtoi cắt, và phép chia nguyênVừatối đa 60
- Bộ đệm vòng tự tăng dung lượng: new[n](old) chép sai thứ tựVừatối đa 60
- Loại trừ lẫn nhau giữa các thread bằng semaphoreVừatối đa 60
- Ràng buộc soft: mặc định nhường cho nơi gọi, luật thì khôngVừatối đa 60
- Mô hình bộ nhớ thưa bằng associative arrayVừatối đa 60
- Đa hình: hàm virtual qua handle lớp chaVừatối đa 60
- SVA cho bắt tay req/ack: $rose, |-> hay |=>, $past và disable iffVừatối đa 60
- SVA cho valid/ready: giữ valid, giữ data và $onehot0Vừatối đa 60
- Timer đếm xuống có ngắt và tự nạp lạiVừatối đa 60
- Bộ giới hạn tốc độ token bucket: xô đầy, cấp và nạp cùng nhịpVừatối đa 60
- FSM đèn giao thông có cảm biến xe đường phụVừatối đa 60
- UVM callback: gắn cho một instance hay cho cả kiểuVừatối đa 60
- Checker UVM cho bộ cộng 8 bitVừatối đa 60
- uvm_config_db: đọc cấu hình trong build_phase, có giá trị mặc địnhVừatối đa 60
- UVM factory: đăng ký lớp con, override theo kiểu và theo instanceVừatối đa 60
- Objection: giữ run_phase sống tới khi DUT xử lý xongVừatối đa 60
- Sequence với randomize() with: local:: và giá trị trả vềVừatối đa 60
- uvm_report_catcher: hạ cấp lỗi đã biết, lọc thông báo nhiễuVừatối đa 60
- Viết uvm_sequence: burst ghi, đọc lại để kiểm, dừng khi lỗiVừatối đa 60
- Subscriber nhận handle bị tái sử dụng: phải chép, và clone() không chép gìVừatối đa 60
- uvm_object: do_copy, do_compare, convert2stringVừatối đa 60
- FSM máy bán hàng: giá 15, nhận xu 5 và 10Vừatối đa 60
- Thanh ghi trạng thái ngắt W1C: sự kiện và lệnh xoá cùng nhịpVừatối đa 60
- So sánh có bit don't-care: ==, ===, ==? và giá trị XVừatối đa 60
- FIFO bất đồng bộ hai clock (con trỏ Gray)Khótối đa 120
- Chuyển clock không glitch giữa hai clock không liên quanKhótối đa 120
- Chia tần số 3 với duty cycle 50%Khótối đa 120
- Bộ chia tuần tự 8 bit (restoring division)Khótối đa 120
- FIFO first-word-fall-through trên SRAM đọc đồng bộKhótối đa 120
- FIFO đồng bộ sâu 8Khótối đa 120
- Chuyển dữ liệu qua hai miền clock bằng bắt tay req/ack 4 phaKhótối đa 120
- Đồng bộ xung qua hai miền clock (toggle synchronizer)Khótối đa 120
- Arbiter round-robin 4 requesterKhótối đa 120
- Bộ nhân tuần tự dịch-cộng 8×8 với bắt tay start/doneKhótối đa 120
- Skid buffer valid/ready: đủ băng thông, mọi ngõ ra từ flip-flopKhótối đa 120
- Cơ chế callback: chuỗi hook trước/sau khi gửiKhótối đa 120
- LRU cache: get/put với thay thế phần tử lâu chưa dùng nhấtKhótối đa 120
- UVM driver: lái handshake valid/ready đúng luậtKhótối đa 120
- UVM monitor: lấy mẫu luồng valid/ready qua virtual interfaceKhótối đa 120
- Scoreboard UVM không theo thứ tự (khớp theo id)Khótối đa 120
- Mô hình thanh ghi UVM (RAL): vị trí trường, RO, W1C và offset theo byteKhótối đa 120
- Scoreboard UVM so khớp theo thứ tựKhótối đa 120
- Virtual sequence: hai agent song song, fork…join và p_sequencerKhótối đa 120
- X-optimism: khi if (X) chọn nhánh else và giấu bugKhótối đa 120
Huy hiệu
Cách tính điểm và các hạng
- Chỉ Nộp bài mới được tính. Chạy thử chỉ chạy các case mẫu, không tính điểm và không tính lượt sai.
- Một đề được tính là đúng khi mọi case đều xanh (AC). Mỗi đề chỉ tính điểm lần AC đầu tiên.
- Điểm gốc: Dễ 20, Vừa 40, Khó 80. AC ngay lượt nộp đầu ×1.5; sau 1–2 lượt sai ×1.25; sau đó ×1. Lỗi biên dịch không tính là lượt sai.
- Mỗi gợi ý mở trước khi AC: −10% (tối đa −30%). Xem lời giải trước khi AC: đề đó không còn điểm.
- Thử thách hôm nay: +10 điểm nếu lần AC đầu tiên rơi đúng ngày đề đó là thử thách.
- Điểm và hạng được tính lại từ lịch sử nộp bài trên thiết bị này. Không có bảng xếp hạng chung, vì chưa có tài khoản hay server lưu điểm.
| Hạng | Từ | Bậc |
|---|---|---|
| Sắt | 0 điểm | IV → I |
| Đồng | 100 điểm | IV → I |
| Bạc | 250 điểm | IV → I |
| Vàng | 450 điểm | IV → I |
| Kim cương | 700 điểm | IV → I |
| Cao thủ | 1000 điểm | – |
| Đại cao thủ | 1400 điểm | – |
| Thách đấu | 1900 điểm | – |
Máy chấm
Đang kết nối máy chấm…
Bài nộp được gửi tới máy chấm để biên dịch và mô phỏng thật, rồi so với từng case. Trang này không tự tạo kết quả khi chưa kết nối được máy chấm. Xem trang máy chấm.
Sao lưu Luyện code
Lượt nộp, gợi ý đã mở và bản nháp. Tách riêng khỏi tiến độ bài học.