【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) beginif (rst)q <= 1'b0;elseq <= 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.mzph.cn/news/891972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30、论文阅读:基于小波的傅里叶信息交互与频率扩散调整的水下图像恢复

Wavelet-based Fourier Information Interaction with Frequency Diffusion Adjustment for Underwater Image Restoration 摘要介绍相关工作水下图像增强扩散模型 论文方法整体架构离散小波变换与傅里叶变换频率初步增强Wide Transformer BlockSpatial-Frequency Fusion Block…

Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s

前言&#xff1a;纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 官方文档…

DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解

由于项目原因必须使用DjangoORM模型&#xff0c;所以今天整理了一下关于DjangoORM模型里的详细内容。包含字段参数、常用字段类型及参数、模型和表单验证器。 一、通用字段参数 这些参数可以应用于多种字段类型&#xff1a; &#xff08;1&#xff09;null&#xff1a;如果为 …

Go语言的数据库交互

Go语言的数据库交互 引言 Go语言自2009年发布以来&#xff0c;因其简洁、高效&#xff0c;并发编程支持等特点&#xff0c;逐渐被广泛应用于后端开发、云计算等领域。在实际开发中&#xff0c;数据库交互是应用程序的重要组成部分&#xff0c;本文将探讨Go语言如何与不同类型…

Matlab回归预测大合集(不定期更新)-188

截至2025-1-2更新 1.BP神经网络多元回归预测&#xff08;多输入单输出&#xff09; 2.RBF神经网络多元回归预测&#xff08;多输入单输出&#xff09; 3.RF随机森林多元回归预测&#xff08;多输入单输出&#xff09; 4.CNN卷积神经网络多元回归预测&#xff08;多输入单输…

【读书与思考】历史是一个好东西

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 导言 以后《AI日记》专栏我想专注于 AI 相关的学习、成长和工作等。而与 AI 无关的一些读书、思考和闲聊&#xff0c;我打算写到这里&#xff0c;我会尽量控制自己少想和少写。 下图的一些感想…

Git使用mirror备份和恢复

Git使用mirror备份和恢复 使用到的命令总结备份1.进入指定代码仓库&#xff0c;拷贝地址2.进入要备份到的文件夹&#xff0c;右键打开git命令行&#xff0c;输入以下命令3.命令执行完成后会生成一个新文件夹 恢复1.在gitee上创建代码仓库![请添加图片描述](https://i-blog.csdn…

人工智能的可解释性:从黑箱到透明

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​ ​ 人工智能&#xff08;AI&#xff09;的快速发展和广泛应用&#xff0c;带来了许多革新的成果&#xff0c;但也引发了对其透明性和可解释…

前后端环境配置java/vue/maven/node.js/mysql

java环境配置 maven环境配置 node环境安装 mysql8安装 workbench安装 开发工具下载安装 redis安装配置 git安装配置 Java 简介&#xff1a;Java 是一种广泛使用的面向对象的编程语言&#xff0c;由 Sun Microsystems&#xff08;现为 Oracle&#xff09;于 1995 年发布…

Nacos注册中心介绍及部署

文章目录 Nacos注册中心介绍及部署1. 注册中心简介2. 注册中心原理3. Nacos部署-基于Docker3.1 Nacos官网下载3.2 基础数据信息3.3 环境信息3.4 docker安装部署3.5 测试3.5 测试 Nacos注册中心介绍及部署 1. 注册中心简介 Spring Cloud注册中心是Spring Cloud微服务架构中的一…

Nginx与frp结合实现局域网和公网的双重https服务

背景&#xff1a; 因为局域网内架设了 tiddlywiki、 Nextcloud 等服务&#xff0c;同时也把公司的网站架设在了本地&#xff0c;为了实现局域网直接在局域网内访问&#xff0c;而外部访问通过frps服务器作为反向代理的目的&#xff0c;才有此内容。 实现的效果如下图琐事 不喜欢…

zephyr移植到STM32

Zephy如何移植到单片机 1. Window下搭建开发环境1.1 安装Choncolatey1.2 安装相关依赖1.3创建虚拟python环境1.4 安装west1.4.1 使用 pip 安装 west1.4.2 检查 west 安装路径1.4.3 将 Scripts路径添加到环境变量1.4.4 验证安装 1.5 获取zephyr源码和[安装python](https://so.cs…

【分糖果——DFS】

题目 代码1 #include <bits/stdc.h> using namespace std; set<string> s; void dfs(int num1, int num2, int u, string ans) {if (u 7){if (num1 num2 > 5)return;ans (char)((num1) * 17 num2);s.insert(ans);return;}for (int i 0; i < num1; i){f…

buildroot 编译 x264 及 ffmpeg

buildroot 编译 x264 及 ffmpeg 依赖安装x264编译安装解压源码并修改配置文件配置及编译编译错误: aarch64-linux-ar: two different operation options specified编译结果ffmpeg安装源码编译错误 : ERROR: x264 not found using pkg-config为在rk3568平台上开发音视频采集及…

【HarmonyOS】鸿蒙应用实现屏幕录制详解和源码

【HarmonyOS】鸿蒙应用实现屏幕录制详解和源码 一、前言 官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章&#xff0c;讲解屏幕录制的使用。官方文档参见&#xff1a;使用AVScreenCaptureRecorder录屏写文件(ArkTS) 二、方…

解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“

解决在VS2019/2022中编译c项目报错fatal error C1189: #error : “No Target Architecture” 报错原因 在winnt.h中&#xff0c;不言而喻&#xff0c;一目了然&#xff1a; 代码节选&#xff1a; #if defined(_AMD64_) || defined(_X86_) #define PROBE_ALIGNMENT( _s ) TY…

统计素数并求和(PTA)C语言

本题要求统计给定整数M和N区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数M和N&#xff08;1≤M≤N≤500&#xff09;。 输出格式: 在一行中顺序输出M和N区间内素数的个数以及它们的和&#xff0c;数字间以空格分隔。 输入样例: 10 31输出样例: 7…

Python教程丨Python环境搭建 (含IDE安装)——保姆级教程!

工欲善其事&#xff0c;必先利其器。 学习Python的第一步不要再加收藏夹了&#xff01;提高执行力&#xff0c;先给自己装好Python。 1. Python 下载 1.1. 下载安装包 既然要下载Python&#xff0c;我们直接进入python官网下载即可 Python 官网&#xff1a;Welcome to Pyt…

Java中时间类的转换是怎么进行的

String转TimeStamp DateFormat format new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Timestamp startTime new Timestamp(format.parse(startDate).getTime()); TimeStamp转String String nowDate new SimpleDateFormat("yyyyMMdd").format(nowTimeS…

如何限制大量请求并发

前言&#xff1a; 1、主流浏览器在 HTTP/1.1 下对同一域名的最大并发请求数通常是 6~8 个。超过限制的请求会进入队列&#xff0c;等待空闲的连接。 2、可以利用Promise模拟任务队列&#xff0c;控制并发请求数量&#xff0c;以避免对服务器造成过大的压力。&#xff08;先进先…