From RTL to Reality – Issue #6 Title: The Life of a Net – From RTL to Routed Reality
“Every signal starts as code… but what it becomes defines the silicon.”
🚀 From a Line of Code to a Wire on Silicon
We often write RTL like this:
assign y = a & b;
But did you ever wonder what this signal y actually becomes on the chip? What paths it takes? What delays it picks up? How many buffers carry it across metal layers?
This issue is all about walking with the net — from HDL to metal.
🔬 The Lifecycle of a Signal
1️⃣ RTL Definition:
2️⃣ Synthesis:
3️⃣ Floorplanning & Placement:
4️⃣ Clock Tree Synthesis:
5️⃣ Routing:
6️⃣ Post-Route Timing Analysis:
7️⃣ Signoff:
💡 Why This Matters
🧠 Real-World Lesson:
Let’s zoom into a classic mistake that even experienced engineers overlook: assuming a small control signal won’t impact timing.
In one of our old project, we had a low-fanout net — just a simple control signal generated by a flip-flop. On RTL, it looked harmless.
But here’s what happened post-layout:
The issue was that a control signal (say, enable_ctrl) was generated far away from where it was consumed — likely in a different module or hierarchy level.
// In control_logic.v
always @(posedge clk) begin
enable_ctrl <= condition;
end
// In datapath.v (far away physically)
assign mux_out = enable_ctrl ? data_a : data_b;
Fix? We took a smarter look at the RTL.
Instead of generating enable_ctrl in a distant module, we moved the generation of the control signal closer to where it’s used, like this:
// In datapath.v or nearby control block
wire local_enable_ctrl;
assign local_enable_ctrl = condition; // moved logic closer
assign mux_out = local_enable_ctrl ? data_a : data_b;
The control logic didn’t need to live so far apart. A minor tweak to move that control logic hierarchy closer to the mux logic brought huge benefits:
This case reinforced a golden rule: what looks simple in code can become complex in silicon.
Always trace the physical impact of control logic — especially low-fanout nets!
Code matters. Floorplan matters. Everything is connected.
📚 For GATE Learners:
Even though routing isn’t in the GATE syllabus — Understanding how nets get delayed helps you appreciate:
🎯 Challenge for This Week:
🔁 Post before/after logic delay improvement if any!
🗓️ Coming Next:
“The Myth of Zero Slack – Why Meeting Timing Isn’t Enough” We’ll explore how zero slack might still mean failure — and how margins can be your best friend.
📩 Enjoyed this deep trace of a signal? Share it. Comment. Subscribe. Let’s trace more — From RTL to Reality.
#RTLtoReality #PhysicalDesign #VLSI #SignalIntegrity #NetDelay #Routing #TimingClosure #EDAtools #FromRTLtoReality #ChipDesign #GDS #Netlist #BackendDesign #STA
Digital IC Designer
1moCongratulations Ashok Tirumalasetty your posts are always so insightful. About the Real World Lesson, I have a doubt. At first glance, not knowing the constraints you faced, we could simply change the placement script to put the two modules closer to each other, avoiding the long detour, right?