自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(344)
  • 资源 (11)
  • 收藏
  • 关注

原创 【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明

感觉第一个项目其实设计的难度不太大(当然我写出来的bug也不少哈),验证环境搭建也比较简单,整个项目更加侧重于熟悉流程和设计验证的入门。而且包传输协议更多应用在网络芯片架构中,和现在比较火的处理器方向距离比较远。所以呢第二个虚拟项目就显得挺有必要了。

2023-12-02 18:24:47 391 3

原创 ICer的脚本练习专栏介绍与全流程目录

完成芯片的入门虚拟项目专栏之后,决定开始更新更适合IC宝宝的脚本练习专栏ψ(*`ー´)ψ。专栏会涉及到perl、python、shell、tcl、makefile、awk、vba、html、css等语言,当然并不会面面俱到,仍然以入门和示例讲解为主。内容上会综合很多之前我已经在博客上完成的脚本,对开发和代码进行进一步的讲解,因此如果已经比较了解脚本语言和操作的,不建议订阅该专栏否则会失望的。后续如果有修改和调整,会及时在本页面更新。

2023-08-31 16:24:36 374

原创 【IC萌新虚拟项目】Package Process Unit项目全流程目录

Package Process Unit虚拟项目是芯片设计与验证新员工的培训项目,一般会分配6~10周的时间独立开发该项目并完成验收。在整个项目中,新员工需要熟悉工作站、项目流程、公共环境与代码等,并根据方案文档独立设计ppu模块,之后进行功能验证与综合等芯片交付流程。

2023-06-03 23:10:55 2324 9

原创 【IC前端虚拟项目】接口分析与agent组件生成

就我自己而言,因为有gen_uvm_agent和gen_uvm_tb两个工具在手,同时也习惯于先打好地基看到波形和组件行为,清理组件存在的问题之后再向上组织,所以优先的选择必然是自下而上的搭建方式。“在芯片验证领域,"agent"通常指的是一个特定的验证组件,它模拟了某一类外部设备或内部组件的行为,用以对设计中的接口或功能进行测试。在芯片验证中,根据不同的验证环境和需求,可能还会有其他类型的agents,比如-scoreboard,它负责比较监视器捕获的数据和预期数据,以确保设计的正确性。

2024-04-18 20:01:13 26

原创 【IC前端虚拟项目】测试点思路和文档编写

一般而言测试点文档包括测试点编号、一/二/三级测试点、测试点描述、测试方案描述、测试点之间的cross情况、测试点出处、对应的功能覆盖和断言覆盖反标、plan coverage等,下面来简单的介绍一下。好,又到了测试点文档了这一部分了,我经常跟带着学习的童鞋说,对于芯片验证人来说测试点文档就是最重要的一个交付文件,也是在项目交付中最为看重的进度衡量指标。上面的内容和格式其实不重要,测试空间是无限的而测试点是有限的,如何通过有限的测试点去覆盖无限的测试空间才是最重要的。这个一般是需要有经验的大佬来指点了。

2024-04-18 20:01:05 390

原创 【IC前端虚拟项目】验证环境方案思路和文档组织

同样的,环境中的ram_model也暂时不需要投入太多的经历,把主要的力量放在base_test和env内rm的搭建上才会事半功倍,而后在学习了virtual seq之后再来独立的写一下ram_model。而关于验证方案文档,大部分时候都不是太重要,有结构图和组件说明已经足以。相比而言,测试点文档才是重中之重,下一篇我们就从测试点文档介入。

2024-04-10 11:36:16 102

原创 【IC前端虚拟项目】验证阶段开篇与知识预储备

前言尼德兰的喵:【芯片验证】年轻人的第一个systemVerilog验证环境全工程与解析之前的工程是基于modelsim来完成的,而后评论区有朋友想把工程移植到工作站的vcs环境下时一直有些小问题,所以我就说亲自来移植下:…这里也搞清楚了,就可以开始虚拟项目的验证阶段了,不要畏难验证的入门是比较费劲的但是只要入了门后面很快就能得心应手,比如我4年多不干验证的活了但是想写一个验证环境还是分分钟搞出来,这东西就是一劳永逸能吃经验的工作,大家加油吧!看完绿皮书之后,怎么知道到的到不到位了呢?

2024-04-10 11:13:57 616

原创 【IC前端虚拟项目】时序面积优化与综合代码出版本交付

可以看到目前提供的RTL代码在1G时钟下的最差路径是-270ps,如果是正常交付里最差路径是-100ps以内都是可以接受的,后端可以搞定,当然了Total Negative Slack必然不能太大。那么对于这个虚拟项目呢,1GHz要求-100ps以内确实比较强人所难,所以可以尝试在600MHz或者800MHz时钟下收敛时序。看起来这个面积是真的不大,本身mvu就是一个不算很复杂的模块。而对于不从事芯片设计的同学,则不需要在这件事上花费时间了,直接进入验证流程即可。

2024-04-09 14:43:51 142

原创 【IC前端虚拟项目】SDC文件编写与DC综合环境组织

最后是io.sdc的设置,mvu的接口实际上是比较简单的所以直接通过get_ports的方式把接口区分输入和输出拉出来就可以,注意要把时钟去除掉,一般我们也会把复位单独处理不过因为mvu面积不大一拍内复位信号抵达所有的寄存器也没有什么压力,所以保留在里面也没关系。这个文件中我们定义了后面要使用的众多变量,注意clk_period决定了时钟频率此处设置为1单位默认为ns,因此默认的综合频率是1Ghz,并且将uncertainty设置为1/200,latency设置为1/5,这里可以根据实际情况设置经验值。

2024-04-09 13:21:34 245

原创 【IC前端虚拟项目】spyglass lint环境组织与lint清理

和上个虚拟项目的lint清理环节一样,关于spyglass的lint清理功能与流程还是大家通过各种资料去学习下就好啦。和之前不同的事,这次的虚拟项目里我把流程封装为Makefile,更加的贴近了实际项目交付流程。而后就可以根据提示进行lint的清理工作了。

2024-04-07 17:49:46 117

原创 【IC前端虚拟项目】顶层编译环境生成与验证代码初版本交付

那么向验证侧交付代码,通常编译通过之后就可以视为可交付,可启动环境集成与验证工作。这一篇我们视为向验证侧交付的记录,完整这一篇后如果准备走验证方向,就可以直接转入验证流程了。向验证侧交付,交付的是什么呢?同样的,代码我们也已经完成了,那么剩下的就是组织filelist给验证。脚本是对vcs命令行的组织,可以帮我们清理比较明显的编译问题和连线问题,在清理了所有的error和warning后,对验证同学交付的第一版代码就准备好了。完成模块的初步编码后,我们就面临着向验证和后端交付代码的事情了。

2024-04-07 14:43:12 202

原创 【芯片验证】通关寄存器与ral_model —— 寄存器生成流程中加入backdoor后门配置

上一篇文章中,我们通过在环境中配置后门路径的方式来实现了寄存器的后门访问,但是在实际应用中,无论寄存器RTL文件、例化还是寄存器模型大概率都是工具生成的,比如在本专栏中实现的gen_reg.py脚本,那么在这个流程中如何接入backdoor后门路径配置呢?

2024-04-03 19:10:39 155 1

原创 【芯片验证】通关寄存器与ral_model —— backdoor后门访问实操测试

在之前工作的基础上,补充关于关于寄存器后门访问的测试,以及如何在流程上进行后门路径生成方法(放在下一篇吧)。以及和两份官方资料。虚拟项目中的寄存器结构,不过该虚拟项目中的寄存器结构和本专栏中所设置的结构完全一致,因此仅供参考即可,仍就可以用该专栏中之前的结构与代码就行啦。

2024-04-03 17:56:50 41

原创 【IC前端虚拟项目】mvu顶层集成的原则与技巧

我自己规划和集成顶层一般有一个习惯,就是在top层下面封装core层和其他模块,比如mvu的top层下例化了mvu_reg和mvu_core两个模块,而mvu_core下面是前三篇文章中所阐明的模块:inst_buffer、read_path和write_path。当然了,集成工具还有很多这个只是我个人使用比较熟练的罢了。2.区分时钟域和复位域,保证core层是独立的时钟复位不需要糅杂太多的其他的考虑,比如本设计中,如果加入了配置寄存器快速复位,那么mvu_reg和mvu_core的复位域就必然不同了;

2024-03-31 22:14:10 67

原创 【IC前端虚拟项目】write_path子模块DS与RTL编码

那么rece_xxxx_buffer和send_xxxx_buffer这两组buffer怎么用呢,大的规则就是,达到发送标准的数据就放到send_buffer,没达到的就暂存在rece_buffer等下一笔数据过来。第一笔返回的数据中有10byte有效,根据地址偏移shift后发现没有满足发送的要求(写效率最高,指令内的写出数据是来连续的,即只有一条指令的第一笔写和最后一笔写的前后可以出现strb为0的情况),所以要等待下一笔数据到来。3.first_buffer:标记这笔数据是否为一个指令的第一笔数据;

2024-03-28 16:36:02 164

原创 【IC前端虚拟项目】3周搞定虚拟项目时间安排

本工程为IC虚拟项目工程,预期完成时间为3~4周,规划如下。

2024-03-19 11:32:19 113 2

原创 【IC前端虚拟项目】read_path子模块DS与RTL编码

而在计算得到一个指令能拆多少个transfer后,再根据burst_len(即一个transaction中可以包含多少个transfer),就可以把指令一笔一笔的拆分为transaction了,每个transaction就是一笔ar请求。在学习完成AXI4协议后,再继续进行read_path模块的搭建。过多的细节请参考代码吧!要维护的三个核心寄存器就是如上所示这三个了,需要注意的是因为burst_len和outstanding是可以配置的,因此每一笔ar请求发出去之后地址如何跳转是需要分别考虑的。

2024-03-15 17:55:14 44

原创 【ICer的脚本练习】给模块顶层生成一个dummy文件 —— gen_dummy

gen_dummy这个脚本的应用场景是这样的:在已经确定了顶层接口之后,模块的开发人员A开始模块编码。这个时候我们就可以走另外一条路,那就是先提供一个空的顶层集成先用着,等模块的代码初步完成了再去交付真正的顶层。那么显然我们用一个正则匹配可以获取到接口的信息,不过当你实践起来的时候会发现有些情况会很难受,最难受的点出现在哪呢?于是我们发现了一个问题,就是给信号赋值时候我们需要信号的真实位宽,所以在Class Port里最好专门做一个函数,来分析出信号的位宽。已经知道输入的文件了,下一步自然就是解析文件。

2024-03-11 18:05:58 80

原创 【IC前端虚拟项目】inst_buffer子模块DS与RTL编码

同样的,写完成后进行一样的操作。于是,在代码中维护了四个指针:inst_in_ptr表示指令待写入的位置,inst_cmt_ptr表示待提交指令的位置,rd_done_ptr表示已经读完成位置,wr_done_ptr表示已经写完成。结构的核心部分是一个8项深的cmt_buffer,用于接收、存放和提交指令,同时buffer中还记录着本条指令的状态:读完成、写完成。一般指令的cmt_queue类型结构必然是支持乱序的,不过因为项目里指令本身就是顺序执行的,所以采用顺序更新的结构就可以了。

2024-03-01 17:27:31 179

原创 【IC前端虚拟项目】MVU寄存器文档编写与RTL代码生成

那可就多了,先依据软件的需求把他们需要上报的状态都加上,然后再把内部关键的状态机、计数器、状态信号都加上,再把busy/empty、时间戳啥的记上。最后别忘了,把能够“甩锅”的信号都记上,比如对外接口的valid/ready状态、ostd状态等等。兜兜转转又回到了寄存器,但是没有办法,虚拟项目肯定要贴近真实真实项目的,而一个真实项目里不管是做模块设计还是SOC设计,寄存器总是难以避免的。在上层我已经帮你包好啦,直接在顶层例化这个模块就好,所有的结构都已经体现在接口上了。寄存器文档在rtl的reg目录下。

2024-01-15 19:12:40 167 2

原创 【IC前端虚拟项目】MVU子模块DS文档编写与注意事项

后续在其他公司,对DS的要求也是测次不齐。DS - Design Specification(设计规格):"DS" 表示设计规格,它是在架构规格之后,进一步细化和准备进入实际设计和开发的文档。判断DS文档是否合格,有一个最简单的标准,就是进行项目和模块交接时,后来者能够通过DS文档看懂整个模块80%以上的代码。于我个人而言,DS文档还是应该尽量丰富的,因为我是一个不爱写代码注释的人(我那些注释基本都是用来生成代码的)。通俗来说,DS这东西就是写给自己看的,是在编码前进行思路梳理和电路描述的文档。

2024-01-15 15:58:26 283

原创 【IC前端虚拟项目】MVU FS文档编写与注意事项

FS - Functional Specification(功能规格):"FS" 表示功能规格,它是芯片设计和开发的早期阶段的一个文档。Feature List:功能列表,即为功能进行编号,罗列模块的各项功能。罗列的粒度自己把控即可,这部分通常也作为测试点的参考。Introduction:介绍模块功能以及模块的主要特性,子章节里可以着重介绍几个主要的功能点和实现方案或是实现目的(为了支撑哪些更上层的功能);Block Diagram:结构框图以及对框图的描述,通常还会有对主要通路或主要子模块的功能说明;

2024-01-06 22:51:06 601

原创 【IC前端虚拟项目】MVU模块方案与背景熟悉

mvu根据指令进行数据的搬运,将所有的数据搬运完成后向idu进行指令提交。

2023-12-13 14:58:03 269

原创 【IC前端虚拟项目】工程目录组织说明

这些全部是手撕代码,当然会借助verilog-mode/auto_testbench/gen_uvm_agent/gen_uvm_tb等诸多工具辅助开发,不需要担心。文档目录在“MVU芯片前端设计验证虚拟项目”中,截至本篇文章时,包含了MVU_FS.md/project_req.md和mvu_vp_list.xlsx三个文件。由于目前只完成了代码编写和功能验证,目录内容暂不全面,后面会逐步补全。

2023-12-07 19:41:58 290

原创 【IC前端虚拟项目】linux工作站下工程的配置和使用说明

我使用的是芯王国的虚拟机,大家可以关注其公众号进行虚拟机的获取。然后source一下就可以了。基本的工程目录使用方式就是这些。

2023-12-07 19:20:33 159

原创 【IC前端虚拟项目】git和svn项目托管平台的简单使用说明

我个人在工作中svn和git都有使用过,感觉上来讲,芯片项目开发使用git有些“不值当”,因为很少有多人同时开发同一个文件的场景,这使得分支管理不是非常的重要。而一旦分支较多时(尤其设计分支和验证分支),对于bug修改和提交同步也带来了一些困扰,所以至今我还是喜欢基于svn的芯片项目管理。对于大型项目或需要分布式开发的情况,Git更为强大,因为它提供了更灵活的分支管理和更高效的版本控制机制。分支和标签: 分支和标签在SVN中存在,但相对来说较为复杂,并且在操作时会对整个目录进行复制。

2023-12-06 20:15:16 447

原创 最亮那颗星的中年危机 —— 程序员的职场困境与破局

伴随科技的迅猛发展,计算机走进千家万户,智能终端深深融入每个人的生活,程序员这一职业群体也逐渐成为了现代社会中不可或缺的一部分。然而,就像其他职业一样,有高峰就会伴随低谷,曾经意气风发的程序员在当今的职场环境中也难免遇到困境。

2023-11-03 17:06:52 6219

原创 【ICer的脚本练习】tcl语法熟悉和工具tcl的实例

TCL(Tool Command Language)是一种简单但功能强大的脚本语言,它经常用于自动化任务、测试和快速原型开发。你看这个名字就能知道,这个语言最主要的作用就是用来操作工具,尤其我们常用的EDA比如vcs、verdi、dc、pt等。所以这篇文章我们就先熟悉下tcl的语法,然后再看看tcl对eda工具的使用好啦。

2023-10-14 01:04:06 784

原创 【ICer的脚本练习】shell的三剑客:grep/sed/awk

大大小小的脚本我们写了几个了,在上一篇我们借助bashrc简单了解了bash语言的一些语法和组织规则。这一篇呢我们还是回到shell简单看下三个常用命令,毕竟脚本也可以视为复杂的命令尤其shell脚本其实就可以理解为命令的集合。grep/sed/awk被称为linux三剑客,具有强大的文本处理能力,使用得当的情况下可以获得比写脚本更高效的体验。这也正引出我的另外一个思考:不要遇到事就想着写脚本,先看看原生的命令是不是已经给你搞定了。

2023-10-09 20:37:19 213

原创 【ICer的脚本练习】基于shell语言咱们来搞一搞bashrc

shell语言在芯片前端的工作中有两个主要的作用,一是流程自动化脚本,二是工作站环境的配置。为什么shell用于流程自动化相较于perl和python我感觉最舒服呢,个人理解是shell在linux中是真实的线程不像python即使用os.system()这种操作也是创建的虚拟线程,即使里面cd /path但是实际上是没有cd过去的。而shell不同,你在里面写cd /path那是真的会跳转回去的。

2023-10-04 23:51:39 133

原创 入职芯片开发部后,每天摸鱼之外的时间我们要做些什么呢

作为一个由经过层层面试和offer筛选,刚刚以优秀的面试结果入职某fabless芯片研发公司的芯片前端工程师,每天摸鱼之外的时间,你需要做些什么呢?一大早(当然11点前都算一大早)走进位于一线城市黄金地段的公司大门,坐在部门每月花了3000块钱为你租的工位上,打杯咖啡配上刚刚买的一屉小笼包开心的补充好能量。

2023-09-25 23:02:16 514

原创 【ICer的脚本练习】cp.py和mv.py咱们用python升级一下cp和mv

这一章仍然是一个简单的脚本练习,用来熟悉匹配替换与文件流。

2023-09-21 15:06:30 204

原创 【HELLO NEW WORLD】一封来自开放自动化时代的邀请函

​施耐德电气开放自动化平台,迈向开放、高效与韧性、可持续、以人为本的未来工业。是人类在信息世界开启的第一行也是我们走进自动化领域迎来的第一句问候如今面临向数字化与自动化加速转型的新变局工业领域迫切地需要一场变革走向更加高效、智能、多元的工业时代先锋是走在时代前面的人先锋去探索走出困局之事顺势而动 为所当为开放自动化平台的问世便是我们对于工业自动化时代先锋的回答一封来自开放自动化时代的邀请秉承施耐德电气不断开拓创新的一贯理念。

2023-09-11 16:50:01 626 1

原创 【ICer的脚本练习】通过perl脚本来检查仿真log的结果

这是一个非常简单的perl脚本示例,展示一下perl语言“极简”的编码习惯。perl是我脚本入门的语言,一度也是最擅长的,但是因为python的强势现在我基本不写perl了。上一个大的perl脚本是用来做代码生成的,我至今记忆尤深写了3000多行各种循环正则套用,一旦debug间隔时间超过1周我就根本看不懂这脚本了。可见perl的可读性确实吧,真的不高,即使他写起来确实爽。

2023-09-10 00:42:13 270

原创 【ICer的脚本练习】正则表达式里重点记住几项足够应对面试官

一旦你在简历中写上了“熟悉xxx脚本语言”,那么面试官就不可避免的会问你脚本相关的知识点。那么在众多知识点里,评选出来哪个是最常考的呢?个人的经历是正则表达式。

2023-09-08 15:28:31 133

原创 【ICer的脚本练习】脚本使用的思维培养 —— 关键词查找

本文仍旧以培养脚本使用的思维和常见操作为主,不过多的进行脚本编码说明。

2023-09-07 11:51:03 174

原创 【ICer的脚本练习】脚本使用的思维培养 —— 用例回归

脚本思维本质上是对重复人力操作的汇总与提炼,也就是说如果一件事情可以通过人不需要大量思考的按部就班操作能够完成,那么理论上脚本就可以进行替代。那么什么时候需要写脚本呢?这个问题就有点类似于在写代码时,我们什么时候要封一个函数、一个宏定义呢?

2023-09-03 17:05:45 534

原创 【ICer的脚本练习】“精通各种语言的hello world!“

这一节呢主要是检查一下Linux和win环境是不是能正常的支持咱们的脚本学习,所以来答应各种语言的hello world!,毕竟打印了就是学会了٩(๑❛ᴗ❛๑)۶顺便从最基础的细节咱们一点一点来。

2023-09-02 11:54:14 534

原创 【ICer的脚本练习】脚本语言介绍和使用场景分析

在芯片开发领域中,脚本指的是用于自动化执行特定任务或流程的程序。这些脚本可以是各种编程语言的程序,包括但不限于Tcl、Perl、Shell、Python等。在芯片设计过程中,脚本被广泛用于各种任务,例如创建和编辑设计文件、执行仿真测试、生成报告等。使用脚本可以大大提高设计效率,减少重复性工作,并确保整个设计流程的一致性。

2023-08-31 18:00:33 241

原创 【芯片前端】auto_testbench的大版本升级——加入简单预期与自动比对

在上次完成自诩为“定向验证的巅峰之作”之后,我觉得这个工具应该是写到头了,不过最近的实践中我发现,对于auto_testbench的主要应用场景——CBB与UT的验证而言,如果能不依赖于方法学进行一些简单预期和比对,还是可以大幅收敛debug时间的。

2023-08-15 01:05:27 623

2023版本SystemVerilog标准

2023版本SystemVerilog标准

2024-03-20

前言技术-芯片-寄存器生成与uvm ral访问环境搭建全流程工程

寄存器生成与uvm ral访问环境搭建全流程工程 芯片设计与验证工程师必备!

2023-02-14

多功能进制转换器(包括IEEE754浮点进制转换)

数据类型囊括了:二进制/十进制/十六进制/补码/IEEE754 float! 强大的进制转换器,你值得拥有!

2023-02-09

内置自动添加axi总线宏的xlsm文档

内置自动添加axi总线宏的xlsm文档

2022-03-08

祝福语波形生成器,基于vcs

祝福语波形生成器,基于vcs

2022-02-02

match_rtl.rar

一个简单的uvm笔试题

2021-12-27

uvm_demo.tar

一个简单的uvm+makefile验证环境,解压之后可直接运行

2021-12-14

gen_link RTL定层自动互连工具

用于verilog RTL顶层集成的工具

2021-07-15

gen_dummy.py

给rtl生成dummy文件

2021-07-08

find_key.rar

针对word.docx文档的关键词索引器

2021-06-14

auto_assert.py

【快速断言体系】一步步搭建一个高效的快速断言体系

2021-06-10

RISC_SPM.rar

一个小型的RISC处理器,学习用的

2021-06-06

sv test.rar

【验证小白】只有SV+modelsim学验证 系列的最终代码,下载解压后即可运行

2021-05-23

ieee system verilog standard 1800-2017.pdf

system verilog IEEE标准,IEEE官网下载,供查阅system verilog相关语法规则

2020-02-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除