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

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
    • Synthesis Flow Overview
      • What Synthesis Does
      • The Five Flow Stages
      • Why Constraints Change the Netlist
      • A Small Design Through Yosys
      • Concepts, Not Commands
    • Synthesizable RTL and Inference
    • 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

←Synthesis Flow Overview
  1. Topics
  2. Logic Synthesis
  3. Synthesis Foundations
  4. Synthesis Flow Overview
  5. Concepts, Not Commands
On this page

    Part 1 of 9, lesson 5 of 14Part 1 of 9/Synthesis Foundations/Lesson 5 of 14Intermediate

    Concepts, Not Commands

    Commercial tools share these concepts with different commands; what this course uses.

    Command names do not transfer between tools, but the five stages do. Learners who carry techmap into a commercial tool fail loudly; learners who carry the stage model land on their feet.

    After this lesson you can: map each Yosys step used in this topic to its stage and to the commercial name for the same job, and explain why the commercial column is orientation only.

    Same concepts, different commands

    Every synthesis tool walks the same five stages, but each vendor names the steps differently and splits the work at different joints. One tool reads RTL with a command called read, another elaborates with elaborate, a third compiles the whole middle of the flow with a single compile, and all of them report area and timing with some flavour of report_area and report_timing. The names differ; the questions each step answers do not.

    Nothing on this page is commercial-tool syntax, and nothing here runs anywhere but Yosys. The commercial names appear for orientation only, so that a reader meeting compile or report_area elsewhere recognises which stage they belong to. The only runnable vocabulary in this course is the Yosys passes in the script below, and the table maps each of those passes to its stage and to the commercial name for the same job.

    The vocabulary run

    The script reruns the AND-OR cone from the previous lesson through the full vocabulary: read the design in, elaborate it, optimise it, lower it, map it, and report it. Each stage writes its own recording, and the assertions pin the same shape the previous lesson proved: two $and cells plus one $or cell with zero generic gates before mapping, library cells only after.

    yosys
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    read_verilog <<EOV
    module and_or(input a, b, c, d, output y);
    assign y = (a & b) | (c & d);
    endmodule
    EOV
    hierarchy -check -top and_or
    proc
    opt
    tee -o stat_opt.txt stat
    write_json net_opt.json
    design -save vocab_opt
    techmap
    tee -o abc_vocab.txt abc -liberty course.lib -constr typical.constr -D 1000
    tee -o stat_vocab.txt stat -liberty course.lib
    write_json net_vocab.json
    design -save vocab_mapped
    design -load vocab_opt
    select -assert-count 2 t:$and
    select -assert-count 1 t:$or
    select -assert-none t:$_AND_ t:$_OR_ t:$_NOT_ t:$_MUX_ t:$_XOR_ t:$fa %u
    design -load vocab_mapped
    select -assert-none t:$and t:$or t:$xor t:$mux t:$not t:$add t:$sub %u
    select -assert-none t:$_AND_ t:$_OR_ t:$_NOT_ t:$_MUX_ t:$_XOR_ t:$_NAND_ t:$_NOR_ %u
    select -assert-min 1 t:INV t:BUF t:NAND2 t:NOR2 t:AND2 t:OR2 t:NAND3 t:NOR3 t:XOR2 t:XNOR2 t:AOI21 t:OAI21 t:MUX2 %u
    check
    log PASS: one design shows every vocabulary word from read to report

    The recording anchors the table that follows. After the coarse half of optimisation the netlist holds 3 word-level cells; after mapping it holds 3 library cells at area 6 library units of course.lib. Those two numbers are what the two vocabularies describe with different words: our stat -liberty report and their report_area output answer the same question, which cells at what area, about the same netlist.

    The mapping table

    Yosys step (run here)

    Stage

    Commercial name (orientation only)

    read_verilog

    1. Read

    read: loads the RTL sources.

    hierarchy -check

    2. Elaborate

    elaborate: builds the design hierarchy.

    proc

    2. Elaborate

    elaborate: resolves processes into logic.

    opt

    3. Optimise

    compile (optimise half): shrinks generic logic.

    techmap

    3. Optimise

    compile (lowering half): lowers to generic gates; the spelling differs per tool and is orientation only.

    abc -liberty

    4. Map

    compile / map: covers with library cells, the library mapping step.

    stat, `stat -liberty`

    5. Report

    report_area, report_timing: counts, area, timing.

    Read the middle column as the stable concept and the outer columns as two dialects for it. Yosys spells elaboration as two passes, hierarchy and proc, where a commercial tool says one word, and it files the lowering pass techmap under optimisation because lowering is technology-independent; only abc maps. Neither dialect is more correct; they cut the same five stages at different joints, and the commercial column is never typed into a tool anywhere in this course. Those commercial names carry no options or flags here: vendors spell and split them differently, so look up the exact command in whatever tool you are using.

    Predict first A colleague runs report_area in their commercial tool and asks which stage of our five-stage model produced those numbers. What do you answer, and which recording on this page backs you?

    Stages 4 and 5 together: mapping chose the cells, reporting priced them. Area exists only after mapping, so any area report describes the mapped netlist by construction. The recording backs it directly: the generic stage holds 3 cells with no area at all, while the mapped stage holds 3 cells priced at 6 library units. Their report_area and our stat -liberty answer the same question about equivalent netlists.

    Pairing diagram with six rows. Yosys read_verilog pairs with commercial read; hierarchy and proc with elaborate; opt with the optimise half of compile; techmap with the lowering half of compile; abc with the compile or map step to library cells; stat with report_area and report_timing.
    Each Yosys step and its commercial counterpart, paired by stage from reading at the top to reporting at the bottom.

    Agreement check, not a break-it: bundle the passes into one command

    This variant checks agreement rather than breaking anything: commercial flows rarely expose five separate passes, and one compile does the middle of the flow in a single step. Yosys has its own bundle, the stock synth pass, so the second script reruns the same cone that way: one synth -top in place of the separate elaborate, optimise, and lower passes, followed by the same abc -liberty and stat -liberty. The assertions pin the same endpoint shape as before: no coarse or generic cells, library cells only.

    yosys
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    read_verilog <<EOV
    module and_or(input a, b, c, d, output y);
    assign y = (a & b) | (c & d);
    endmodule
    EOV
    hierarchy -check -top and_or
    synth -top and_or -flatten
    tee -o stat_synth.txt stat
    write_json net_synth.json
    design -save after_synth
    tee -o abc_compile.txt abc -liberty course.lib -constr typical.constr -D 1000
    tee -o stat_compile.txt stat -liberty course.lib
    write_json net_compile.json
    design -save compiled
    design -load compiled
    select -assert-none t:$and t:$or t:$xor t:$mux t:$not t:$add t:$sub %u
    select -assert-none t:$_AND_ t:$_OR_ t:$_NOT_ t:$_MUX_ t:$_XOR_ t:$_NAND_ t:$_NOR_ %u
    select -assert-min 1 t:INV t:BUF t:NAND2 t:NOR2 t:AND2 t:OR2 t:NAND3 t:NOR3 t:XOR2 t:XNOR2 t:AOI21 t:OAI21 t:MUX2 %u
    check
    log PASS: one compile-like synth plus abc reaches the same library-only endpoint

    The bundled run reaches the same endpoint, and that sameness is the point of the check: the cell total, area, and delay all match the explicit-passes run above. The stages did not vanish; synth ran its own elaborate, optimise, and lower sequence inside one command, exactly as a commercial compile would. The bundling is the dialect; the stages are the concept.

    The misuse that stays inside one tool is subtler: reading a report_area printout as if it described the generic netlist. Area cannot describe word-level cells, because word-level cells have no library prices; the number on the page would then be attached to the wrong stage, and every decision built on it would price logic that was never built. When an area number appears, ask which netlist it prices first. On this page the answer is recorded: the mapped one, with its families listed in the stat report, never the generic one.

    Common mistakes

    Carrying a Yosys pass name into another tool misleads. Keep the concept, the stage, and the question it answers; look up that tool's own command when you get there.

    Why does this course teach on Yosys, and what transfers to a commercial tool?

    Weak answer: Yosys commands are the industry standard, so compile means the same thing everywhere and I can reuse these scripts at work.

    Strong answer: Yosys is the runnable dialect, not the standard. What transfers is the stage model and the report discipline: elaborate before optimising, map before pricing, and read area only after mapping. On this page that discipline reads word-level cells with no area against mapped cells at the recorded area. The commercial names in the table orient that knowledge; none of them runs here.

    Follow-up: your new team says their flow has no techmap step. Where did it go? Into their compile step, which covers our techmap plus abc plus optimisation in one command; ask which reports prove each half ran.

    Check yourself A new team uses a different synthesis tool. Which parts of this topic still apply, and which stay behind?

    The five-stage model, the input-output contract, and the constraint tradeoffs still apply: those are concepts. Only the Yosys pass names stay behind, because commands are local to each tool.

    Check yourself A colleague quotes an area for the generic netlist on this page. Using the two recorded numbers, explain the error.

    The generic stage holds word-level cells and no area: word-level cells carry no library prices. The recorded area belongs to the mapped cells only, so the colleague attached a mapped number to a pre-mapping netlist.

    • Stages transfer; command spellings stay behind.

    • Report names answer the same questions: which cells, how many, what area.

    • Area belongs to the mapped netlist in every dialect.

    Rule of thumb: keep the concept and the stage; look up each new tool's own command.

    How this was checked

    The recorded numbers on this page come from two Yosys 0.69 runs of the shown scripts, recorded by the course checker (scripts/tools/run-rtl-testbenches.mjs with COURSE=synth): the AND-OR cone from read to report against course.lib, plus an agreement-check rerun that bundles the middle passes into one stock synth command. The commercial names (read, elaborate, compile, map, report_area, report_timing) are common industry terms shown for orientation only and are never run here; the teaching library is fictional, so absolute areas are teaching units.

    • Interview: run a mock interview on this topic

    Related topics

    • What synthesis does

    • Scripted Flows and Regression

    • Equivalence Checking

    Previous

    7 / 139

    Next: Synthesizable RTL and Inference

    Up next

    Up nextSynthesizable RTL and Inference

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • What Synthesis Does
    • The Five Flow Stages
    • Why Constraints Change the Netlist