Chip design
From a plain-language spec to RTL that passes its checks, with Micius running the EDA tools
Talk to an engineer
- 7 of 7 checks
- Micius’s own self-checks, written from the spec, all passing in one run (4-bit counter)
- One conversation
- from spec to RTL, simulation and a schematic: work that usually passes between several people
- Same RTL
- the schematic comes from the exact code that passed; every tool output stays in the chat
Turning a written spec into tested RTL usually passes through several hands: one engineer writes the spec, another writes, compiles and debugs the code, someone else draws a diagram for review. Here a digital design engineer hands the spec to Micius, Zhiman’s model, which writes the code and tests, runs the tools, works through the failures, and builds a schematic from the code that passes.
Take the smallest possible block: a 4-bit counter with an active-high asynchronous reset and an enable. The design might be under twenty lines; its self-checking testbench can run past a hundred. Real blocks are far bigger, but the chain is the same: write the spec, write the RTL (the hardware description code), compile, simulate and fix, then prepare a diagram and waveforms for review.
That work usually passes between people, and context leaks at every handoff. Whoever writes the tests has to reconstruct the design intent; whoever draws the diagram may not have the final code. The code that was verified and the diagram that gets reviewed can drift apart without anyone noticing.
Solution
A one-paragraph spec, handed to Micius
The engineer’s spec names the top module and its ports and says how reset and enable behave. Four behaviours need tests: asynchronous reset, holding while enable is off, counting, and wrapping from 15 to 0. It asks Micius to fix any failure from the tools’ diagnostics and rerun the checks; once everything passes, build the schematic from the same final code; return the full RTL, the testbench and the real results. And if it doesn’t pass, say so.
Micius, Zhiman’s model, set out its plan, wrote the RTL and a self-checking testbench, then ran the EDA tools itself: syntax and lint checks, compile, simulate. It chose which tool to run, and every command and every tool response went into the conversation verbatim, so the conversation is the run record.
The checks passed, but the first compile stopped: the testbench was driving one of the design’s outputs, which can be read but not written, a common testbench slip. Micius can fix errors like that straight from the message and compile again.
Diagnosis
Design bug or testbench bug?
The harder case is a simulation that runs but fails its self-checks, and the first question is whether the design or the testbench is wrong. Here the pattern pointed one way: reset and hold passed, while the three counting checks were each one count behind. Micius read that as the testbench sampling right on the clock edge, before the counter had updated, and expecting the wrong value on the first edge after reset. Its fix was to sample just after the edge, rewriting the testbench and leaving the RTL alone.
The first rewrite didn’t settle it; the count was still a cycle out. Micius narrowed the problem to the expected value on the first active clock edge after reset was released, rewrote the testbench again and reran. Each diagnosis and change is written into the conversation, so an engineer can see why it changed what it did.
Illustrative flowOnly counting checks fail, each a cycle behind: the testbench samples too early.
Results
Seven checks pass, then the schematic
In a separate run on exactly the same RTL, lint reported no errors or warnings and all 7 self-checks passed, covering the four behaviours in the spec. Only then did Micius synthesise the code and generate the schematic, confirming it came from the RTL that passed. Synthesis produced a flip-flop with an asynchronous reset, as the spec asked.
The engineer got back a report listing what was done, the RTL and testbench that passed, and the self-check log, each checkable against the others. The report also states the limits: these simulation results support functional verification but are not sign-off, and key conclusions need an engineer’s review. Whether to adopt the code is the engineer’s call.
Schematic
Trying the reset by hand
Because the schematic is generated from the code that passed, nobody draws it separately. Engineers can toggle clock, reset and enable on the diagram and watch the count against the waveform. Micius suggests an order: raise reset and see 0; release it, enable, and clock up; disable and watch it hold; count past 15 and see it wrap. The telling test is to let the count reach a non-zero value, then raise reset between two clock edges. The count clears at once, which is what “asynchronous” looks like on a waveform.
Illustrative flowRaise reset between two clock edges and the count clears at once.
The schematic helps engineers understand the structure; whether the function is right still rests on the self-checks, and Micius says so when it hands over. The design was also very small: multiple modules, bus protocols and coverage closure weren’t part of this run. Micius closed with a few options for the engineer to pick from, such as making the width a parameter, adding an output that flags when the count matches a value, or building a UVM test environment.
The same approach also works for
-
Fixing existing RTL
Run the checks on failing code as is, find the problem, fix it, rerun, and return the full code once it passes.
-
Synthesis and sizing
Check and synthesise a finished block, and report how much logic it uses and which risks are still uncovered.
-
Tests for existing blocks
Write the scenarios a spec requires into a testbench and simulate; when a check fails, work out whether the design or the test is at fault.
-
What the setup can do
Before a new task, check which kinds of verification the current setup supports and which it doesn’t, and say why.
How many hands does a block pass through before it simulates cleanly?
Tell us what a typical block looks like, which EDA tools you use and what verification requires. We’ll walk through a block with you and show what Micius takes on first.
Related use cases
Role training and onboarding
Turns scattered training documents into a knowledge map that people review, and answers new hires’ questions with the source attached.
TCAD modelling and simulation
Sets up, runs and explains device simulations.
End-to-end chip design
From a written brief through RTL, simulation and synthesis to a GDS layout, fixing each failure at its source and rerunning the flow.
PCB design
Describe a board in a paragraph; Micius picks parts, draws the schematic, routes the board and runs the checks, for an engineer to review.
