怎么阅读芯片源代码(rtl)

====part one====

主要的原则。

一个rtl可以是这样的:

经常大家习惯于算法和数据结构。对于设计的部分,落实不一定多。

另外一个rtl也可以是这样的:

所以从不同的层面来讲,一个Rtl有不同的表述。

首先大概把所有的部分浏览一遍,看看有些什么。

其次,找到重点的部分。

重点分两种,一种是熟悉的,一种是重要的。

如果重要的不懂,那就先看熟悉的。

再次,找到其中的逻辑。这是因为单点的记忆是不能得到很好的收获的。

重要的,对rtl来讲,存储,状态机,interface都是重点。interface中,要注意信号之间的紧密关系,比如握手。或者信号的处理要求:要求在何种状态响应,要响应什么。

逻辑行中,如果向下面说的,如果多个if 分支,或者非常多的if层次,那更有可能是重要的。反之,多个分开的if,则更不一定是重要的。

熟悉的,有时不是真熟悉,而只是熟悉其中一个字眼,基于这个字眼,能够联想,就是扫雷。

在逻辑寻找中,应该注意分支。比如一个if block中,平行的几个分支是按什么来切分的。逻辑中,还应该注意层次,还是if,如果if中还有if,那么两个if的逻辑层次是依据什么来的呢?

要知道模块关系。

interface的确很重要。双边关系。指的两个模块之间的关系。可以先明确起来。去掉一看就没有明确意义的。去掉普通意义,大的意义的。合并同类项。找出动词,状态词。

宁深入,不求全。一个interface串一串,串到底。就像开辟根据地,至少在每一个模块(地方)都能扎下根来。即使是个小树苗,也比走马观花好。

比如,

两个模块hndler和dp之间的interface。

选最亮的那些名字拿出来,就是,没有看过代码的人都觉得很厉害的拿出来。

然后再把这些信号归并同类项。--的是一类,**的是一类。 (这里首先分了数据和控制状态类两类)。

在每一类中,挑一个去熟悉,那么,就可以对脉络,甚至精要熟悉了。

interface: 如果归类之后,发现还是挺多的。那么结合一些基本背景,获知核心的一类。

在一类信号中,发现每个信号的不同点。

以及将信号,与特定的fifo, interface等联系在一起。

skill: look around。如果一个点位看得稀里糊涂,那么,就看看其他的。比如看时序,看得糊涂,那么就看一下逻辑。算法是灵魂,状态机设计,关键信号设计,counter设计是一些骨架。

在状态机设计中,有一些紧状态和松状态,前者依赖一些counter,后者则是依赖一些外部信号,往往时间不确定。紧是自身的时间要求,而松是外部的时间,两者是应该配合起来的。

阅读的最终目的,是得到可记忆,可以传达,值得传达的东西。比如一个算法,一个方法。而非得到事情本身。

得到算法,也是一种映射,将各种信号,数据之间的关系,映射到一些处理上去。

====part two====

怎么学习一个之前未学习过的领域。

这实际是一个升级的过程。

那么,其实很多面向市场,产品,项目的,人,都是有非常强的学习能力的。所以,要论实操,不一定,比得过技术人。但是见识和沟通因而不可忽视。

升级的学习。其实应该是利用现有的知识,扩展到新的领域。比如说RTL,从控制类的代码,到信号处理类的代码,到协议类的代码。这些代码的跨度也许很大。但是,看完之后,就知,比起其他代码,这些差异就不那么大了。

不大,在于,最后都会落实到状态机,FIFO, RAM,关键信号的设计上。而区别在于核心的逻辑。有些是控制器,有些事DSP,有些是协议加速器。因此,如这个图:

如此,上半部分就是灵魂了。下半部分是壳体。大部分的设计,在下半部分是有共通之处的。而要学习的也就是上半部分的逻辑。

====part three====

面向verilog

经常碰到的问题是,信号tracing一下又回去了。让人看不清。

好在,现在大部分的代码遵循一个规则,<= 和=之分。所以可以尝试在两次<=之间作为一个小段落,停一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

碳交易机制下考虑需求响应的综合能源系统优化运行(附带Matlab程序)

碳交易机制下考虑需求响应的综合能源系统优化运行&#xff08;附带Matlab程序&#xff09; 仿真平台&#xff1a;MATLABCPLEX 使用的是yalmipcplex求解器完成求解 资源地址&#xff1a; 碳交易机制下考虑需求响应的综合能源系统优化运行&#xff08;附带Matlab程序&#xff09…

CSRF 漏洞实战

CMS创建新用户 方法&#xff1a;攻击者可以利用 XSS 触发 CSRF 攻击。因为&#xff0c;可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程&#xff0c;可以构造如下代码&#xff1a; 代码&#xff1a; <script> xmlhttp new XMLHttpRequest(); xmlhttp.open(&qu…

安装DevEco Studio时,遇到的ohpm报错(解决)

如上图所示&#xff0c;我试了网上的各种办法&#xff0c;包括官网的文档&#xff0c;运行init.bat也不行。 接下来我说一下我的办法&#xff1a; 我从官网下载安装包后&#xff0c;将bin文件添加在了环境变量里&#xff08;最终安装的位置&#xff0c;但是因为他会自己下载所…

【运维必看】2023年常见运维面试题汇总,助你拿下offer!

IT运维面试问题总结-基础服务、磁盘管理、虚拟平台&#xff01; 基础服务—— 1、简述Linux中常见的系统服务&#xff0c;其作用分别是&#xff1f; 常见的系统服务及其作用有&#xff1a; ●NTP/Chrony&#xff1a;用于时钟同步&#xff1b; ●DHCP&#xff1a;动态主机配…

MySQL(16):变量、流程控制与游标

变量 在MySQL数据库的存储过程和函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据。 在 MySQL 数据库中&#xff0c;变量分为 系统变量 以及 用户自定义变量 。 系统变量 变量由系统定义&#xff0c;不是用户定义&#xff…

软件工程分析报告04详细设计说明书——基于Paddle的肝脏CT影像分割

基于Paddle的肝脏CT影像分割系统的详细设计说明书 一、引言 本文档是基于Paddle的肝脏CT影像分割系统的详细设计说明书。本文档旨在对系统的设计、实现以及测试等方面进行详细的阐述&#xff0c;以便于开发人员进行开发和测试工作。 二、概述 肝脏CT影像分割系统是一种医疗影像…

Learning reliable modal weight with transformer for robust RGBT tracking

论文&#xff1a;《Learning reliable modal weight with transformer for robust RGBT tracking》 针对问题&#xff1a;局部线性匹配容易丢失语义信息 解决方法&#xff1a;为了增强特征表示和深化语义特征&#xff0c;分别设计了一种基于改进的Resnet-50的模态权值分配策略…

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出

文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer&#xff1a; 方法一&#xff1a;命令行中输入Filter Designer&#xff0c;再回车打开。 方法二&…

漏洞-任意账号注册

一漏洞介绍 1.未验证邮箱/手机号 情景&#xff1a;应用为了方便用户记录用户名&#xff0c;使用邮箱和手机号作为用户名&#xff08;因此很多应用在注册的时候就要求用户填写&#xff0c;多数时候都会给用户发送激活信息&#xff0c;激活后才能登录&#xff09; 缺陷&#xff…

配置DHCP服务器

概述 DHCP(Dynamic Hast Configuration Protocal)就是动态主机配置协议&#xff0c;可以自动配置主机的IP地址、子网掩码、网关及DNS等TCP/IP信息。以DHCP可以有效地降低客户端IP地址配置的复杂度和网络的管理成本。如果路由器能够转发DHCP请求&#xff0c;只需要在一个子网中…

振南技术干货集:深入浅出的Bootloader(4)

注解目录 1、烧录方式的更新迭代 1.1 古老的烧录方式 (怀旧一下&#xff0c;单片机高压烧录器。) 1.2 ISP 与ICP 烧录方式 (还记得当年我们玩过的 AT89S51?) 1.3 更方便的 ISP 烧录方式 1.3.1串口 ISP &#xff08;是 STC 单片机成就了我们&#xff0c;还是我们成就了…

Kubernetes介绍以及Kubernetes快速部署

Kubernetes介绍以及Kubernetes快速部署 文章目录 Kubernetes介绍以及Kubernetes快速部署1.Kubernetes介绍&#xff1a;1.1.Kubernetes简介1.2. Kubernetes应用部署方式演变1.3.Kubernetes功能1.4.Kubernetes工作原理1.5.工作流程1.6.优缺点 2.Kubernetes环境部署2.1.环境说明2.…

EMC-4641C运动控制器固件升级

EMC-4641C运动控制器固件升级 更新前查看运动控制器固件版本 点击打开ESMTPTest_X64R.exe程序 点击搜索&#xff0c;程序自动选择IP为192.168.0.135的运动控制器&#xff08;实际操作时候可能会因为现场情况&#xff0c;IP会有细微不同&#xff09; 点击Connest 等待几秒后在…

将Soildorks模型导入PreScan

首先将Soildworks模型导入到SketchUP中&#xff0c;导入方法如下&#xff1a; 在Soildworks中将模型另存为IFC 2x3 模型 在选项中将单位改成米 在SketchUP中文件选择导入 ifc 文件即可 然后在SketchUP中定义坐标轴 SketchUP中红色的轴为X&#xff0c;绿色的轴为Y&#xff0c;蓝…

一个车厢号码识别算法(2005年的老程序----ccc)

一个车厢号码识别算法&#xff08;2005年的老程序----ccc&#xff09; 2023-09-18 ccc 程序的识别效果 对图中的车厢号码部分用上下两条线限定分为&#xff0c;然后进行识别。 从上面的识别效果可以看出&#xff0c;识别算法具有一定的鲁棒性&#xff0c;能够适应车厢号码的各…

打印字符(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

开启学习新时代,电大搜题助您实现梦想!

亲爱的读者朋友们&#xff0c;当您拥有追求知识的渴望&#xff0c;秉持着对成功的执着追求时&#xff0c;浙江开放大学&#xff08;广播电视大学&#xff09;诞生了——它向您开启了一扇通向知识殿堂的大门。而今&#xff0c;我们荣幸地向您推荐一款既简便又高效的学习利器——…

JavaWeb——HTML常用标签

目录 1. 标题标签 2. 段落标签 3. 换行/分割线标签 4. 列表标签 4.1. 有序列表 4.2. 无序列表 5. 超链接标签 6. 多媒体标签 6.1. img 图片标签 6.2. audio 音频标签 6.3. video 视频标签 7. 表格标签(重点) 8. 表单标签&#xff08;重点&#xff09; 1. 标题标签 …

软件工程分析报告03需求规格说明书——基于Paddle的肝脏CT影像分割

需求规格说明书 一、 引言 本项目的背景是解决现有医疗影像处理的挑战&#xff0c;特别是针对CT扫描图像的肝脏和肝脏肿瘤分割。在传统医学影像分析中&#xff0c;手动或半自动分割方法常常耗费大量时间&#xff0c;且容易受主观因素影响&#xff0c;因此需要一种自动化的解决…

智慧城市项目建设介绍

1. 项目建设背景 随着城市化进程的加速&#xff0c;城市发展面临着诸多挑战&#xff0c;如环境污染、城镇综合管理、经济发展布局等。为了应对这些挑战&#xff0c;智慧城市应运而生&#xff0c;成为城市发展的重要方向。智慧城市通过运用信息技术和智能化技术&#xff0c;实…