Hardware Design Practice Problems
Browse the complete HDLForge problem set. Each problem has its own crawlable page with the task, constraints, concepts and related practice, while the interactive editor remains available from HDLForge.
RTL Design
Study the RTL Design topic guide
2:1 MultiplexerEasy · Verilog / SystemVerilog / VHDLParameterized CounterEasy · Verilog / SystemVerilog / VHDLPriority EncoderMedium · Verilog / SystemVerilog / VHDLSynchronous FIFOHard · Verilog / SystemVerilog / VHDLShift RegisterEasy · Verilog / SystemVerilog / VHDLRising Edge DetectorEasy · Verilog / SystemVerilog / VHDL4-Request Priority ArbiterMedium · Verilog / SystemVerilog / VHDLSmall Register FileMedium · Verilog / SystemVerilog / VHDL8-bit LFSRMedium · Verilog / SystemVerilog / VHDLProgrammable Clock DividerMedium · Verilog / SystemVerilog / VHDLReady/Valid Skid BufferHard · Verilog / SystemVerilog / VHDLElastic Pipeline RegisterMedium · Verilog / SystemVerilog / VHDLAsynchronous-Assert Reset SynchronizerMedium · Verilog / SystemVerilog / VHDLBinary to Gray CounterMedium · Verilog / SystemVerilog / VHDLSimple Dual-Port RAMMedium · Verilog / SystemVerilog / VHDLOne-Hot Traffic-Light FSMMedium · Verilog / SystemVerilog / VHDL3-to-8 DecoderEasy · Verilog / SystemVerilog / VHDL4-Way One-Hot MultiplexerMedium · Verilog / SystemVerilog / VHDL16-bit Magnitude ComparatorEasy · Verilog / SystemVerilog / VHDL8-bit Barrel ShifterMedium · Verilog / SystemVerilog / VHDLLeading-Zero CounterMedium · Verilog / SystemVerilog / VHDL8-bit Population CountMedium · Verilog / SystemVerilog / VHDLFour-Input Min/MaxMedium · Verilog / SystemVerilog / VHDLEven-Parity GeneratorEasy · Verilog / SystemVerilog / VHDLRegister with Clock EnableEasy · Verilog / SystemVerilog / VHDLToggle Flip-FlopEasy · Verilog / SystemVerilog / VHDLSticky Status FlagEasy · Verilog / SystemVerilog / VHDLPulse StretcherMedium · Verilog / SystemVerilog / VHDL4-Cycle Delay LineMedium · Verilog / SystemVerilog / VHDLSerial-to-Parallel ReceiverMedium · Verilog / SystemVerilog / VHDL1011 Sequence DetectorMedium · Verilog / SystemVerilog / VHDLRequest/Acknowledge ControllerMedium · Verilog / SystemVerilog / VHDLPedestrian Crossing FSMMedium · Verilog / SystemVerilog / VHDLTimeout and Retry FSMHard · Verilog / SystemVerilog / VHDLPacket Header Parser FSMHard · Verilog / SystemVerilog / VHDLFour-Beat Burst ControllerMedium · Verilog / SystemVerilog / VHDLVending Machine FSMMedium · Verilog / SystemVerilog / VHDLStart/Busy/Done ControllerEasy · Verilog / SystemVerilog / VHDLCounted Synchronous FIFOHard · Verilog / SystemVerilog / VHDLFIFO Almost-Full / Almost-Empty FlagsMedium · Verilog / SystemVerilog / VHDLFirst-Word Fall-Through BufferHard · Verilog / SystemVerilog / VHDLFIFO Overflow / Underflow Sticky FlagsMedium · Verilog / SystemVerilog / VHDLTwo-Entry Elastic BufferHard · Verilog / SystemVerilog / VHDLPacket FIFO Boundary TrackerMedium · Verilog / SystemVerilog / VHDLCircular Sample BufferMedium · Verilog / SystemVerilog / VHDLSingle-Entry Bypass BufferHard · Verilog / SystemVerilog / VHDLRISC-V Program CounterEasy · SystemVerilogRISC-V Instruction DecoderEasy · SystemVerilogRISC-V Register FileMedium · SystemVerilogRISC-V Immediate GeneratorMedium · SystemVerilogRISC-V ALUMedium · SystemVerilogRISC-V Branch ControlMedium · SystemVerilogRISC-V Load/Store ControlMedium · SystemVerilogIntegrate the 32-bit RISC-V CoreHard · SystemVerilogUART Baud Tick GeneratorEasy · SystemVerilogUART TX Frame ShifterEasy · SystemVerilogUART Transmit ControllerMedium · SystemVerilogUART RX Start-Bit DetectorEasy · SystemVerilogUART RX Data ShifterMedium · SystemVerilogUART Receive ControllerMedium · SystemVerilogIntegrate the UART ControllerHard · SystemVerilogAXI-Lite Register BankEasy · SystemVerilogAXI-Lite AW Channel CaptureMedium · SystemVerilogAXI-Lite W Channel CaptureMedium · SystemVerilogAXI-Lite Write CommitMedium · SystemVerilogAXI-Lite B Response ChannelMedium · SystemVerilogAXI-Lite AR Channel CaptureMedium · SystemVerilogAXI-Lite R Response ChannelMedium · SystemVerilogIntegrate the AXI4-Lite SlaveHard · SystemVerilogAsync FIFO Dual-Port MemoryEasy · SystemVerilogAsync FIFO Binary PointersMedium · SystemVerilogBinary-to-Gray Pointer ConversionEasy · SystemVerilogSynchronize Gray PointersMedium · SystemVerilogAsync FIFO Empty DetectionEasy · SystemVerilogAsync FIFO Full DetectionHard · SystemVerilogPer-Domain Reset SynchronizerMedium · SystemVerilogIntegrate the Asynchronous FIFOHard · SystemVerilogIF/ID Pipeline RegisterMedium · SystemVerilogID/EX Pipeline RegisterMedium · SystemVerilogEX Forwarding UnitHard · SystemVerilogLoad-Use Hazard DetectorHard · SystemVerilogBranch Redirect and FlushMedium · SystemVerilogWriteback Result SelectEasy · SystemVerilogPipeline Hazard Control IntegrationHard · SystemVerilogCache Address DecodeMedium · SystemVerilogCache Hit DetectionMedium · SystemVerilogCache Line StoreHard · SystemVerilogCache Miss / Refill FSMHard · SystemVerilogFour-Beat Refill CounterMedium · SystemVerilogDirect-Mapped Cache ControllerHard · SystemVerilog2-bit Saturating CounterEasy · SystemVerilogBranch History TableMedium · SystemVerilogBranch Target BufferHard · SystemVerilogPredicted Next-PC SelectEasy · SystemVerilogMisprediction DetectionMedium · SystemVerilogBranch Predictor TopHard · SystemVerilogSoC Address DecoderMedium · SystemVerilogBoot ROMEasy · SystemVerilogWord-Addressed Data RAMMedium · SystemVerilogMemory-Mapped GPIOMedium · SystemVerilogMachine Timer PeripheralMedium · SystemVerilogInterrupt ControllerMedium · SystemVerilogSmall RISC-V SoC IntegrationHard · SystemVerilogVector Register FileMedium · SystemVerilogSIMD Execute Pipeline RegisterEasy · SystemVerilogDMA Control RegistersMedium · SystemVerilogDMA Address GeneratorMedium · SystemVerilogDMA Read ChannelHard · SystemVerilogDMA Write ChannelHard · SystemVerilogDMA Transfer CounterMedium · SystemVerilogDMA Transfer ControllerHard · SystemVerilogAXI Crossbar Address DecoderMedium · SystemVerilogTwo-Master Round-Robin ArbiterMedium · SystemVerilogAXI Request RouterHard · SystemVerilogAXI Write Ownership LockHard · SystemVerilogAXI Response RouterHard · SystemVerilogAXI Decode Error ResponderMedium · SystemVerilog2x3 AXI-Lite Crossbar TopHard · SystemVerilogPeripheral Reset ControllerMedium · SystemVerilogAPB Peripheral DecoderMedium · SystemVerilogAPB Read/Response MultiplexerMedium · SystemVerilogAPB GPIO PeripheralMedium · SystemVerilogAPB Timer PeripheralMedium · SystemVerilogUART Register BlockMedium · SystemVerilogAPB Peripheral Subsystem TopHard · SystemVerilogI²C START / STOP DetectorMedium · SystemVerilogI²C Address MatcherEasy · SystemVerilogI²C Byte ReceiverMedium · SystemVerilogI²C ACK / NACK DriverMedium · SystemVerilogI²C Byte TransmitterMedium · SystemVerilogI²C Register PointerMedium · SystemVerilogI²C Clock-Stretch ControlEasy · SystemVerilogMemory-Mapped I²C Register SlaveHard · SystemVerilog
SystemVerilog
Study the SystemVerilog topic guide
always_comb vs always_ffEasy · SystemVerilogSystemVerilog InterfaceMedium · SystemVerilogClock and Reset GeneratorEasy · SystemVerilogReusable Stimulus TaskEasy · SystemVerilogSelf-Checking Adder TestbenchEasy · SystemVerilogQueue-Based Expected-Value CheckerMedium · SystemVerilogRandomized RTL Stimulus LoopMedium · SystemVerilogSimulation Timeout WatchdogEasy · SystemVerilogFile-Driven Test VectorsMedium · SystemVerilogFixed-Latency Pipeline CheckerMedium · SystemVerilogBackpressure-Aware Stream DriverMedium · SystemVerilogInterface ModportsMedium · SystemVerilogInterface Clocking BlockMedium · SystemVerilogMonitor-Only Interface ModportEasy · SystemVerilogParameterized Bus InterfaceMedium · SystemVerilogConstrain Address RangeEasy · SystemVerilogWeighted Random DistributionMedium · SystemVerilogSolve-Before ConstraintMedium · SystemVerilogUnique Random Byte ArrayMedium · SystemVerilogBasic Coverpoint BinsEasy · SystemVerilogCross Operation and SizeMedium · SystemVerilogIllegal Coverage BinMedium · SystemVerilogIgnore Uninteresting Coverage RangeEasy · SystemVerilogState Transition CoverageMedium · SystemVerilog
SVA
Valid Must Eventually HandshakeMedium · SystemVerilogReset Clears StateEasy · SystemVerilogPayload Stable While StalledMedium · SystemVerilogOne-Hot Grant AssertionEasy · SystemVerilogNo FIFO Overflow AssertionEasy · SystemVerilogNo FIFO Underflow AssertionEasy · SystemVerilogBounded Request ResponseMedium · SystemVerilogMutual Exclusion AssertionEasy · SystemVerilogOne-Cycle Pulse WidthMedium · SystemVerilogAXI-Lite Protocol AssertionsHard · SystemVerilogRISC-V Core AssertionsHard · SystemVerilogAXI Crossbar Protocol AssertionsHard · SystemVerilog
UVM
Build a UVM DriverMedium · SystemVerilogReference Model ScoreboardHard · SystemVerilogUVM Sequence ItemMedium · SystemVerilogUVM Sequence BodyMedium · SystemVerilogUVM Monitor Analysis PortMedium · SystemVerilogUVM Agent Build and ConnectHard · SystemVerilogUVM Config DB Virtual InterfaceMedium · SystemVerilogUVM Test ObjectionsEasy · SystemVerilogAXI-Lite Verification InterfaceMedium · SystemVerilogAXI-Lite Sequence ItemMedium · SystemVerilogAXI-Lite UVM DriverHard · SystemVerilogAXI-Lite UVM MonitorHard · SystemVerilogAXI-Lite Reference ScoreboardHard · SystemVerilogAXI-Lite Functional CoverageMedium · SystemVerilogRISC-V Instruction TransactionMedium · SystemVerilogConstrained RV32I Instruction SequenceHard · SystemVerilogAXI Crossbar Sequence ItemMedium · SystemVerilogConstrained Crossbar Traffic SequenceHard · SystemVerilogAXI Crossbar MonitorMedium · SystemVerilogCrossbar Contention SequenceHard · SystemVerilog
Protocols
Study the Protocols topic guide
UART TransmitterMedium · Verilog / SystemVerilog / VHDLSPI MasterHard · Verilog / SystemVerilog / VHDLBackpressure-Safe Ready/Valid SourceMedium · Verilog / SystemVerilog / VHDLAPB Register PeripheralHard · Verilog / SystemVerilog / VHDLAXI-Lite Write Register SlaveHard · Verilog / SystemVerilog / VHDL
FPGA
Button DebouncerEasy · Verilog / SystemVerilog / VHDLTraffic Light FSMEasy · Verilog / SystemVerilog / VHDLParameterized PWM GeneratorEasy · Verilog / SystemVerilog / VHDLToggle-Based Pulse SynchronizerHard · Verilog / SystemVerilog / VHDLClock-Enable Data RegisterEasy · Verilog / SystemVerilog / VHDLFour-Sample Delay LineEasy · SystemVerilogDSP Valid PipelineEasy · SystemVerilogStreaming FIR Pipeline TopHard · SystemVerilogStreaming Byte Position CounterEasy · SystemVerilogEtherType ExtractorMedium · SystemVerilogIPv4 Protocol ExtractorMedium · SystemVerilogUDP Port ExtractorMedium · SystemVerilogPacket Statistics CountersEasy · SystemVerilogStreaming Ethernet/IPv4/UDP ParserHard · SystemVerilogFeed Word CounterEasy · SystemVerilogMarket Message Header DecoderMedium · SystemVerilogSymbol FilterMedium · SystemVerilogPrice / Quantity ExtractorMedium · SystemVerilogMessage ClassifierEasy · SystemVerilogFeed Latency MeterMedium · SystemVerilogLow-Latency Market Data ParserHard · SystemVerilogSPI Clock DividerEasy · SystemVerilogSPI SCLK GeneratorMedium · SystemVerilogSPI Sample / Shift Edge ClassifierMedium · SystemVerilogSPI MOSI Shift RegisterMedium · SystemVerilogSPI MISO Receive RegisterMedium · SystemVerilogSPI Chip-Select ControllerEasy · SystemVerilogSPI Transfer Bit CounterMedium · SystemVerilogConfigurable SPI MasterHard · SystemVerilog
Accelerators
Study the hardware accelerator design guide
Signed INT8 Multiply-AccumulateEasy · Verilog / SystemVerilogFour-Lane INT8 Dot ProductMedium · Verilog / SystemVerilogEight-Lane Reduction AdderMedium · Verilog / SystemVerilogReLU with 8-bit SaturationMedium · Verilog / SystemVerilogSystolic Array Processing ElementHard · Verilog / SystemVerilogValid-Tagged Pipelined MultiplierHard · Verilog / SystemVerilog32-bit Population CountMedium · Verilog / SystemVerilogFour-Lane Signed Vector MaximumMedium · Verilog / SystemVerilogQ1.7 Fixed-Point MultiplierHard · Verilog / SystemVerilogValid-Ready Streaming AccumulatorHard · Verilog / SystemVerilog2x2 Matrix Multiply DatapathHard · Verilog / SystemVerilogThree-Tap INT8 ConvolutionMedium · Verilog / SystemVerilogSigned Fixed-Point MACMedium · Verilog / SystemVerilogFour-Tap FIR DatapathMedium · Verilog / SystemVerilogSigned Saturation StageHard · Verilog / SystemVerilogMatrix MAC Processing ElementMedium · Verilog / SystemVerilogTwo-Element Dot ProductEasy · Verilog / SystemVerilog2x2 Input Tile RegistersMedium · Verilog / SystemVerilogMatrix Compute ControllerMedium · Verilog / SystemVerilogMatrix Result BufferMedium · Verilog / SystemVerilog2x2 Matrix-Multiply AcceleratorHard · Verilog / SystemVerilogThree-Row Line BufferMedium · Verilog / SystemVerilog3x3 Sliding WindowMedium · Verilog / SystemVerilogNine-Tap Convolution MACHard · Verilog / SystemVerilogConvolution Valid PipelineEasy · Verilog / SystemVerilog8-bit Output ClampMedium · Verilog / SystemVerilogStreaming 3x3 Convolution AcceleratorHard · Verilog / SystemVerilogSIMD Lane ALUMedium · Verilog / SystemVerilogFour-Lane SIMD DatapathMedium · Verilog / SystemVerilogVector Mask MergeEasy · Verilog / SystemVerilogVector Reduction UnitMedium · Verilog / SystemVerilogFour-Lane SIMD Execution UnitHard · Verilog / SystemVerilogMemory-Copy DMA EngineHard · Verilog / SystemVerilog