当前位置: 首页 > article >正文

【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】

Overview

本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异,

在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言(如Verilog或VHDL)编写的高层次设计转化为门级网络表,后者由逻辑门及其互连构成。以下详细说明这一过程及其常见的信号命名差异。

RTL-to-Netlist 映射过程

  1. 综合(Synthesis):
  • 由EDA工具(如Synopsys Design Compiler、Cadence Genus等)将RTL代码转化为逻辑门级的描述。

  • RTL中的逻辑行为会被映射到目标工艺库的基本逻辑单元,如与门(AND)、或门(OR)、触发器(FF)等。

  • 综合过程考虑了时序约束(timing constraints)、功耗优化、面积优化等因素。

  1. 优化(Optimization):
  • 对逻辑单元进行重组、简化或门级优化,以满足设计约束。

  • 包括扇出调整、逻辑折叠、路径延迟优化等。

  1. 信号名映射:
  • 在RTL到Netlist映射中,信号名可能会由于工具生成机制而发生变化。

  • 原因包括逻辑优化、资源共享、层级展平(flattening)或冗余信号移除等。

RTL与Netlist中信号名的差异*

差异原因

  1. 层级结构的展平:
  • RTL代码中常以模块化设计,信号名保留其模块名层级。

  • 在Netlist中,为了方便优化和分析,工具可能将设计展平(flattening),信号名因此丢失层级信息或以新规则命名。

例子:

// RTL 中的代码
module top();
    wire a;
    submodule u1(.b(a));
endmodule
module submodule(input b);
    wire c;
    assign c = b & 1'b1;
endmodule

信号名变化:

  • RTL: top.u1.b

  • Netlist: u1_btop_b

  1. 逻辑优化或重命名:
  • 在综合过程中,冗余信号可能被优化掉或重新命名。

  • 工具也可能根据逻辑用途生成新名。

例子:

// RTL 中的信号
wire temp_signal = input1 & input2;

综合后若 temp_signal 被优化:
Netlist中可能直接消失或者映射为内部信号:

  • net_12345
  1. 资源共享的信号变更:
  • 多个实例化模块或信号可能因共享逻辑单元而合并,信号名发生变化。
  1. 时钟、复位信号的重命名:
  • 工具为时钟/复位等全局信号添加特定前缀或后缀,例如 clk_reset_

常见的映射规则

  • 如果不展平层级,Netlist信号名通常是 顶层模块名.子模块名.信号名

  • 如果展平层级,Netlist信号名常以 实例名_信号名 格式表示。

  • 临时信号、优化信号可能生成伪随机ID名,如 net1234

具体信号映射实例

例子:简单寄存器

RTL代码:

module example(input clk, input rst, input d, output reg q);
    always @(posedge clk or posedge rst) begin
        if (rst)
            q <= 1'b0;
        else
            q <= d;
    end
endmodule

Netlist映射:

DFF_X1 q_reg ( // D触发器实例
    .D(d),
    .CK(clk),
    .Q(q)
);

信号映射:

  • RTL 信号名:q

  • Netlist 信号名:保持 q 或自动重命名为 q_reg_Q

例子:优化过程的差异

RTL代码:

assign out = a & b & c;

优化后Netlist:

NAND3_X1 U1 (.A1(a), .A2(b), .A3(c), .ZN(net_5678));
INV_X1 U2 (.A(net_5678), .ZN(out));

信号映射:

  • RTL 信号名:out

  • Netlist 信号名:逻辑分解后可能引入中间信号 net_5678

小结

  • 在RTL到Netlist映射中,信号名差异主要由层级展平、逻辑优化和工具重命名规则引起。

  • 理解信号的功能和工具生成规则,可以更方便地在两者间导航。

  • 可以通过保存综合报告或启用工具设置来保留更多可追踪性信息,例如 -keep_hierarchy 参数或信号标签文件。


http://www.kler.cn/a/488251.html

相关文章:

  • 切忌 SELECT *,就算表只有一列
  • web服务器快速目录搜索遍历工具推荐:Dirsearch
  • 【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
  • 计算机网络——网络层—IP数据报与分片
  • 加速科技荣获“浙江省企业研究院”认定
  • iOS - AutoreleasePool
  • d2j-dex2jar classes.dex 执行报错:not support version 问题解决
  • vue入门项目
  • Git之提交和撤销操作
  • Zstandard压缩算法
  • 如何解决HTML和CSS相关的问题,什么情况下会导致元素被遮挡?
  • Qt官方下载地址
  • 【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答
  • RT-DETR融合[AAAI2025]的ConSeg中的模块
  • 慧知开源充电桩平台:优势与国际化之路
  • Java 原型模式、建造者模式、单例模式
  • ESP32作为Wi-Fi STA模式的测试
  • CLIP代码相关问题
  • Python中用Open3D 可视化的点云窗口快捷键
  • 荒腔走板Mac电脑本地部署 LLM
  • MySQL使用C语言连接
  • 使用SPI机制加载实现类
  • 一文流:Maven精讲
  • 深入探索 ScottPlot.WPF:在 Windows 桌面应用中绘制精美图表的利器
  • ASP.NET Core 实现微服务 -- Polly 服务降级熔断
  • 深入浅出负载均衡:理解其原理并选择最适合你的实现方式