Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
    • Synthesis Flow Overview
    • Synthesizable RTL and Inference
      • Combinational Blocks Infer Logic
      • Priority Chains versus Parallel Selects
      • Latch Inference from Incomplete Assignment
      • Flops, Tri-States and Unrolled Loops
      • What Is Not Synthesizable
    • Reading Netlists and Reports
  • Logic Optimisation and Mapping20
  • Constraints and Timing15
  • Sequential, FSM and Memory19
  • Datapath Synthesis14
  • Area, Power and Test14
  • Verification, ECO and Handoff15
  • Flows and Debugging15
  • Interview and Judgment11
Loading lesson

‹Synthesizable RTL and Inference
  1. Topics
  2. Logic Synthesis
  3. Synthesis Foundations
  4. Synthesizable RTL and Inference
  5. What Is Not Synthesizable

Part 1 · Synthesis Foundations · Intermediate

What Is Not Synthesizable

Delays, testbench blocks and real types have no gate-level meaning.

On this page

    Delays do not synthesize

    A # delay advances simulation time only. It has no gate-level meaning, so it never appears in the netlist.

    The listing below is not run: it uses delays and display calls, neither of which synthesizes.

    delay_demo.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // not-run: uses delays and display calls, neither synthesizes
    module delay_demo (
      input wire clk,
      output reg q
    );
      initial begin
        q = 1'b0;
      end
      always @(posedge clk) begin
        #10 q <= ~q;
        $display("toggled");
      end
    endmodule

    Initial blocks and testbench code

    initial blocks, file access, and $display steer simulation. They describe the testbench rather than the chip, so the tool leaves them out of the netlist.

    Some flows read initial values as power-up states. That meaning varies between tools, so keep initial blocks in testbenches.

    Types the tool cannot build

    real numbers and strings have no bit-level hardware mapping. Testbenches and models may use them freely, but RTL may not.

    Construct

    Synthesizable

    Use instead

    reg and wire vectors

    Yes

    Fixed-width state and data

    integer loop index

    Yes, at elaboration

    Constant loop bounds

    real and string

    No

    Scaled integers and vectors

    # delay

    No

    Clocked sequencing

    initial block

    Testbench only

    Reset logic

    Common mistakes

    Common pitfall

    Code that simulates cleanly with delays and initial values can still describe no hardware. Re-read every testbench idiom before copying it into RTL.

    Interview

    Likely probes: naming what synthesizes and what never does.

    • Delays, file access, and display calls stay in simulation only.

    • initial blocks are testbench code unless the flow documents power-up values.

    • real and string have no hardware mapping, so RTL uses vectors.

    Check yourself A #10 delay sits in RTL. What hardware does it become?

    None. Delays advance simulation time only and never reach the netlist.

    Check yourself An initial block sets a counter at time zero. Why might the chip disagree?

    The block is testbench code. Unless the flow documents power-up values, nothing on the chip performs that step, so use reset logic instead.

    Related topics

    • Flops, Tri-States and Unrolled Loops

    • Simulation Synthesis Mismatch

    • Synthesis Flow Overview

    Previous

    12 / 139

    Next: Reading Netlists and Reports

    Up next

    Up nextReading Netlists and Reports

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Combinational Blocks Infer Logic
    • Priority Chains versus Parallel Selects
    • Latch Inference from Incomplete Assignment