RTL设计与验证
RTL design & verification
Write Verilog/SystemVerilog and testbenches that pass simulation and synthesis checks.
20 条本项目编写的提案 · 分类 v1.1 · 新增基准运行 0 次。下方验证方式与部分得分规则是设计,不是执行结果。
- 典型应用
- Icarus Verilog · Verilator · Yosys · Vivado
- 小类 GUI 需求标签
CL· CLI 足够
任务提案 · 20
展开查看完整原文与建议检查方式;两种界面均保留提案英文原文。
R02.06.01.02-T01 Implement a parameterized synchronous FIFO with almost-full flags
原始指令
Write rtl/sync_fifo.sv: parameters WIDTH and DEPTH (power of two), single clock, active-low synchronous reset, push/pop with full, empty, almost_full (DEPTH-2) and almost_empty (2) flags, and a count output. Simultaneous push and pop when full must pop and push in the same cycle.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · Verilator
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Hidden testbench (Icarus and Verilator, 3 parameter sets) runs 20k random push/pop cycles against a Python reference model via cocotb: zero mismatches on data and flags. Verilator --lint-only -Wall clean.
建议部分得分
50% data ordering; 30% flags and count; 10% full push+pop; 10% lint clean
R02.06.01.02-T02 Build a UART transmitter and receiver with 16x oversampling
原始指令
Implement rtl/uart.sv with a parameterized clock and baud (default 50 MHz, 115200), 8N1, 16x oversampled RX with mid-bit sampling and framing-error flag, and a TX with busy signal. Provide a cocotb test in tb/test_uart.py covering back-to-back bytes.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · cocotb
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden cocotb suite: loopback of 1,000 random bytes at 3 baud rates; RX tolerates ±2% baud mismatch; framing error asserted on bad stop bit; TX bit period within 1 clock of ideal. Agent's own test must pass.
建议部分得分
30% TX timing; 40% RX with baud tolerance; 15% framing error; 15% agent test passes
R02.06.01.02-T03 Find and fix an AXI4-Lite handshake bug from a failing waveform
原始指令
rtl/axil_regs.sv fails the provided tb/axil_tb.sv: writes occasionally drop when AWVALID and WVALID arrive in different cycles. Read sim/fail.vcd, fix the slave so it accepts address and data in any order without deadlock, and keep register map behavior.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · GTKWave
- 交互表面
term· 终端desk· 桌面 GUI- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden AXI-Lite VIP (cocotbext-axi) runs 5k randomized transactions with independent AW/W/B/AR/R backpressure: zero lost writes, no protocol-check violations, registers read back correctly. Diff limited to axil_regs.sv.
建议部分得分
50% randomized transactions pass; 30% protocol checker clean; 20% register map unchanged
R02.06.01.02-T04 Prove a round-robin arbiter's fairness with SystemVerilog assertions
原始指令
For rtl/rr_arbiter.sv (4 requesters), write formal/rr_props.sv with assertions for one-hot grant, grant only to requesters, and starvation-freedom (a held request is granted within 4 cycles). Prove them with SymbiYosys and fix any bug the proof finds.
- 平台
lin· Linux- 应用
- SymbiYosys · Yosys
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader runs sby on agent properties: all PASS in prove mode. Hidden property set (including a liveness bound) is also proven against the fixed RTL. Mutation check: properties must fail on 4 seeded buggy arbiter variants.
建议部分得分
30% agent properties proven; 30% hidden properties pass; 40% mutation kill rate (4 variants)
R02.06.01.02-T05 Design an asynchronous FIFO with Gray-code pointers
原始指令
Implement rtl/async_fifo.sv (WIDTH, DEPTH=2^N) with independent write and read clocks, Gray-coded pointers, two-flop synchronizers and correct full/empty generation. Simulate with unrelated clock ratios and check CDC structure.
- 平台
lin· Linuxmac· macOS- 应用
- Verilator · Icarus Verilog · Yosys
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Hidden cocotb test with 6 clock ratios (incl. 1:7 and 7:1) and random enables: no data loss/duplication over 50k words; full/empty never false-negative. Yosys-based structural check: every crossing goes through a 2-flop synchronizer of Gray-coded pointers.
建议部分得分
50% data integrity across ratios; 20% flag correctness; 30% CDC structure check
R02.06.01.02-T06 Write a self-checking ALU testbench that catches seeded bugs
原始指令
Write tb/alu_tb.sv with constrained-random stimulus, a reference model and functional coverage for rtl/alu.sv (16 ops, flags). The testbench must pass on the golden ALU and report coverage of all ops × flag outcomes.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · Verilator
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader runs the testbench against the golden ALU (must pass, coverage report lists 100% op×flag bins) and 12 hidden mutants (must fail on ≥11). Runtime ≤60 s per run.
建议部分得分
20% passes on golden; 20% coverage complete; 60% mutants detected (5 pts each)
R02.06.01.02-T07 Fit a design into an iCE40 LUT budget at 48 MHz
原始指令
rtl/pixel_pipe.v synthesizes to 910 LUTs on iCE40UP5K and closes at 31 MHz. Reduce it to ≤600 LUTs and Fmax ≥48 MHz with Yosys and nextpnr-ice40 while staying cycle-accurate to the original at the ports, except for added pipeline latency documented in output/latency.txt.
- 平台
lin· Linuxmac· macOS- 应用
- Yosys · nextpnr
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader runs yosys synth_ice40 + nextpnr (fixed seed): LUT count ≤600, Fmax ≥48 MHz. Hidden testbench compares output streams with the original shifted by the declared latency: identical for 100k pixels.
建议部分得分
35% LUT target; 35% Fmax target; 30% functional equivalence with declared latency
R02.06.01.02-T08 Close timing on an Artix-7 design in Vivado
原始指令
Vivado project fixtures/fir_a7 (xc7a35t, 200 MHz clock) has WNS of -1.8 ns. Use the timing report and schematic views to find the critical paths, add pipelining or retiming, and re-implement until WNS ≥0 with no hold violations. Save the timing summary to output/timing.rpt.
- 平台
win· Windowslin· Linux- 应用
- Vivado
- 交互表面
desk· 桌面 GUIterm· 终端- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
click· 指向与点击vis· 视觉判断code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
licensed· 授权专业软件long· 长流程- 提案难度
- 5 / 5
建议验证方式
Grader re-runs synth+impl in batch from the agent's project: WNS ≥0, WHS ≥0, no unconstrained paths, no timing-relaxing constraints added (XDC diff limited to original). Behavioral testbench vs reference FIR output identical after latency alignment.
建议部分得分
40% WNS ≥0; 15% hold clean; 15% no constraint cheating; 30% functional equivalence
R02.06.01.02-T09 Implement a vending-machine FSM from a written spec
原始指令
Implement rtl/vend_fsm.sv from spec/vending.md: coins 5/10/25, item price 35, change returned in fewest coins, cancel returns inserted total. Use an enumerated-state Moore machine.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Hidden testbench runs all coin sequences up to length 6 plus cancels against a Python model: outputs identical every cycle. Verilator lint clean; states declared as enum.
建议部分得分
70% sequence equivalence; 20% change minimal; 10% lint and enum
R02.06.01.02-T10 Clean a legacy core of all Verilator lint warnings
原始指令
Make rtl/legacy_dsp/ (11 Verilog files) pass 'verilator --lint-only -Wall' with zero warnings and no lint_off pragmas, without changing behavior.
- 平台
lin· Linuxmac· macOS- 应用
- Verilator · Yosys
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Grader runs Verilator -Wall: zero warnings; grep rejects lint_off and waiver files. Yosys equiv_make/equiv_simple + equiv_induct between original and edited design proves equivalence for all modules.
建议部分得分
50% zero warnings; 10% no pragmas; 40% formal equivalence
R02.06.01.02-T11 Add forwarding and stall logic to a 5-stage RV32I pipeline
原始指令
rtl/rv32i_core/ is a 5-stage pipeline with no hazard handling. Add EX/MEM and MEM/WB forwarding, load-use stalls and branch flushes so riscv-tests rv32ui pass, then report CPI on the provided CoreMark build.
- 平台
lin· Linux- 应用
- Verilator · riscv-gnu-toolchain
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程- 提案难度
- 5 / 5
建议验证方式
Grader runs all 39 rv32ui-p tests in Verilator: pass count. CoreMark run completes with a valid checksum and CPI ≤1.35 (no forwarding baseline 1.9). output/cpi.txt within 1% of measured.
建议部分得分
60% rv32ui pass rate; 25% CoreMark CPI target; 15% CPI reported correctly
R02.06.01.02-T12 Write an SPI master supporting all four modes
原始指令
Implement rtl/spi_master.sv with CPOL/CPHA mode select, configurable clock divider, 8–32-bit transfers, and chip-select hold. Verify against the provided SPI slave model in tb/.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · cocotb
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden cocotb test: for each of 4 modes and 3 widths, 200 random transfers to the slave model; MOSI/MISO data exact and SCLK edges match mode timing (sample/shift edges). CS stays low for the whole transfer.
建议部分得分
60% data across modes; 25% edge timing; 15% CS behavior
R02.06.01.02-T13 Implement a 16-tap fixed-point FIR matching a Python golden model
原始指令
Implement rtl/fir16.sv: Q1.15 input, coefficients from data/coeffs.txt, full-precision accumulation, rounding to Q1.15 with saturation, one sample per clock throughput. Match the golden outputs from model/fir_golden.py.
- 平台
lin· Linuxmac· macOS- 应用
- Verilator · Python
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader feeds 3 hidden stimulus files (impulse, chirp, full-scale noise): outputs within ±1 LSB of golden for all samples, saturation exact on overflow cases; throughput 1 sample/clk after latency.
建议部分得分
20% impulse response; 50% chirp+noise within 1 LSB; 20% saturation; 10% throughput
R02.06.01.02-T14 Translate a VHDL CRC module to SystemVerilog with equivalence
原始指令
Translate rtl/vhdl/crc32_stream.vhd into rtl/crc32_stream.sv preserving ports, reset behavior and latency, using idiomatic SystemVerilog. Show equivalence with the original.
- 平台
lin· Linux- 应用
- Yosys · GHDL · Icarus Verilog
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader uses Yosys + ghdl-yosys-plugin equivalence checking (equiv_induct) on both designs: proven equivalent. Also 10k random-stream co-simulation identical. File contains no VHDL-isms (lint).
建议部分得分
60% formal equivalence; 30% co-simulation; 10% lint clean
R02.06.01.02-T15 Pinpoint the first divergence in two waveforms
原始指令
sim/golden.vcd and sim/dut.vcd come from the same test on two revisions of a DMA engine. Using a waveform viewer (GTKWave or Surfer), find the first clock cycle where any top-level output differs, the signal, and the internal register that caused it. Write output/divergence.json with {cycle, signal, root_cause_signal}.
- 平台
lin· Linuxmac· macOSwin· Windows- 应用
- GTKWave · Surfer
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
vis· 视觉判断nav· 平移 / 缩放 / 滚动- 工作产物
WP12· 答案 / 决策- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Exact match on cycle and signal; root_cause_signal must equal the seeded bug register. A VCD-diff script could find the cycle, so the root-cause field (requires tracing internal fan-in) carries most weight.
建议部分得分
30% cycle; 20% output signal; 50% root-cause register
R02.06.01.02-T16 Assemble a Zynq block design with AXI GPIO and UART Lite
原始指令
In Vivado IP Integrator, create a block design for the Zynq-7020 board fixture: PS7 with DDR and FIXED_IO, AXI GPIO (8 LEDs, 4 switches), AXI UART Lite at 115200, address map per input/addrmap.csv, run Validate Design, generate the wrapper and bitstream, and export the XSA.
- 平台
win· Windowslin· Linux- 应用
- Vivado
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
drag· 拖放click· 指向与点击- 工作产物
WP06· 代码 / 工程- 条件
licensed· 授权专业软件- 提案难度
- 4 / 5
建议验证方式
Grader opens the .bd via vivado -mode batch: required IP present with parameters, interconnect connections, address segments exactly as CSV; validate_bd_design clean; bitstream and XSA exist with matching hash of the hardware handoff.
建议部分得分
30% IP and parameters; 30% connections; 25% address map; 15% bitstream/XSA
R02.06.01.02-T17 Add pulse and handshake synchronizers across clock domains
原始指令
rtl/ctrl_top.sv passes single-cycle pulses and a 16-bit config bus from a 100 MHz domain to a 27 MHz domain unsynchronized. Add a toggle-based pulse synchronizer and a req/ack handshake for the bus, keeping the interface unchanged.
- 平台
lin· Linuxmac· macOS- 应用
- Verilator · Yosys
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Hidden simulation with jittered clocks: every pulse arrives exactly once, bus values never torn (checked at each ack). Structural CDC script finds no unsynchronized crossings.
建议部分得分
40% pulse delivery; 40% bus integrity; 20% structural CDC clean
R02.06.01.02-T18 Reach full functional coverage on a packet parser with cocotb
原始指令
Write a cocotb testbench (tb/test_parser.py) with constrained-random packets, a scoreboard and cocotb-coverage bins for rtl/pkt_parser.sv (Ethernet/VLAN/IPv4/IPv6/UDP/TCP combinations, bad checksums, truncated frames). Reach 100% of the bins defined in spec/coverage_plan.md.
- 平台
lin· Linux- 应用
- cocotb · Verilator
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader runs the testbench: coverage XML must hit 100% of the plan's 64 bins; passes on golden RTL; fails on ≥5 of 6 hidden mutants; runtime ≤5 min.
建议部分得分
40% coverage; 20% passes golden; 40% mutant detection
R02.06.01.02-T19 Cut flip-flop count by 30% without changing behavior
原始指令
rtl/stats_unit.sv uses 1,240 flip-flops. Reduce it to ≤870 while keeping cycle-accurate port behavior, by sharing registers and removing redundant pipeline state.
- 平台
lin· Linux- 应用
- Yosys · SymbiYosys
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Yosys stat after synth: DFF count ≤870. Sequential equivalence proven with a SymbiYosys miter (bounded 40 cycles + induction) between original and new design.
建议部分得分
50% DFF target (linear credit from 1,240); 50% equivalence proof
R02.06.01.02-T20 Fix an SDRAM controller's refresh timing violation
原始指令
rtl/sdram_ctrl/ fails long simulations with the Micron MT48LC16M16 model reporting tRFC and refresh-interval violations under heavy traffic. Diagnose with the model warnings and waveforms, fix refresh scheduling and command timing, and sustain ≥80% bus utilization.
- 平台
lin· Linuxmac· macOS- 应用
- Icarus Verilog · GTKWave
- 交互表面
term· 终端desk· 桌面 GUI- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程- 提案难度
- 5 / 5
建议验证方式
Grader runs a hidden 20 ms traffic simulation with the vendor model: zero timing warnings (tRFC, tRP, tRCD, 8192 refreshes/64 ms), data integrity on all reads, utilization ≥80% computed from command trace.
建议部分得分
40% no timing violations; 30% data integrity; 30% utilization target
已有研究映射
以下沿用研究目录中的基准与小类映射,不是逐题标注、执行记录或产品背书。