- 博客(40)
- 收藏
- 关注
原创 SOC设计:关于时钟门控的细节
功能:软件配置的使能信号clk_sub_en经过时钟clk 2拍同步处理后产生clk 域下的enable信号,然后使用工艺库里的时钟门控cell产生门控时钟clk_sub。4、软件控制信号:clk_sub_en。1、同步后的rstnsync_clk。使用工艺库里的门控时钟原因如下。
2024-03-06 16:40:42
483
原创 axi传输:burst和outstanding
1、burst传输相当于发出一个地址,然后指定传输的length和每笔传输的size,即为一次burst传输。2、outstanding传输是指不需要等待前一笔传输完成就可以发送下一笔操作,这样可以有效提升通路利用率,提升系统性能3、burst 传输可以减少地址通道的交互,提升单笔传输的效率4、outstanding 可以减少多笔传输之间的等待,提升多笔传输的效率’...
2022-03-17 11:14:22
7724
原创 verilog 文本自动对齐:input output wire reg
1、之前有个脚本可以对齐input和output,但是没有解决wire和reg定义不对齐的问题。所以脚本改进了下,支持input output wire reg对齐2、知识点总结:perl的字符串进行比较时需要使用eq,lt,gt,不能使用数字比较符==,>=,否则会出现逻辑错误。#! /usr/bin/perluse 5.010;use strict;my ($sec,$min,$hour,$day,$mon,$year,$weekday,$yeardate,$saving
2022-03-16 17:32:26
2096
3
原创 IC数字设计:异步复位,同步释放
1、首先带复位端的触发器,对于复位信号,其实也是需要看其复位信号是否满足setup和hold要求2、假设不做同步释放,直接让复位信号一直拉低,去复位,此时系统也可以复位,但是在复位信号拉高的那一刻,触发器采集的时候有可能把复位信号亚稳态采进去,此时,触发器的输出可能又不是复位后的状态,导致系统复位不成功。所以必须做同步释放,这个时候触发器在复位释放可以稳定的采集到1。所以异步复位,同步释放的着重点在于同步释放(复位信号从0变1时,如果没做同步会导致触发器输出不是复位状态)...
2022-03-15 17:05:33
409
原创 vim-easy-align插件使用
写RTL时最常用的对齐有两个1、一个是<=对齐2、按照?对齐对齐之前:经过操作步骤:1.选择指定区域,或者按vip(visual inter paragraph)2.按enter键两次,选中EasyAlign的右对齐3.写一个=,即可按=进行对齐的效果=按照?对齐对齐之前:经过步骤1、选中,按vip2、按enter键3、ctrl+x,然后输入字符?对齐之后:插件参考网址如下:https://github.
2021-09-02 17:21:05
3240
原创 verilog-module input和output自动对齐脚本-perl
总结1.之前用emacs的autoreg和autowire,以及后来使用的gvim 插件autodef,都没有找到合适对齐module input和output的方法,索性就自己写了个perl脚本来对齐。2.使用对齐后代码确实美观了不少。3.脚本使用:可以对当前目录下的.v文件统一进行对齐。脚本名字是run_indent.pl使用效果如下:#! /usr/bin/perluse 5.010;use strict;my ($sec,$min,$hour,$day,$m
2021-08-27 12:11:53
1663
原创 vim/gvim插件-verilog autodef-自动生成
使用gvim插件效果如下插件参考网址https://www.vim.org/scripts/script.php?script_id=4067需要把automatic.vim放在指定的.vim文件夹下使用需要注意的地方:1.:AD 即为autodef快捷键2.如果autoinst的port需要自动化定义,需要前面的always block 块的begin end写完整。否则无法识别(应该是脚本以begin end为识别点)3.不能使用wire[5:0]...
2021-08-27 11:46:25
3972
4
原创 文件夹数量巨大下的关键字搜索
问题产生:跑随机仿真的时候,往往会有5w或者10w的文件夹生成,随机跑完后需要把关键error信息筛选出来,单纯的使用grep会报出数量太多无法识别的情况问题解决:用perl脚本抓取想要的信息,好处是:1.不受文件夹里文件数量的限制,2.可以在大规模随机仿真后即可进行error搜索,不需要再单独去用时间搜索一遍,搜索一遍的时间可能在半个小时级别以上。#! /usr/bin/perluse 5.010;use strict;#use warnings;use Getopt::Long;u
2020-11-02 19:06:06
165
原创 shell 来比较文件夹里文件的不同
采用for循环来比较文件夹里文件的不同#! /bin/shflist="111.c 222.c 111.h 222.h"for i in $flist;doecho "$i compare begin"diff /proj/cmodel/$i .echo "$i compare end"done
2020-11-02 18:57:27
466
原创 verdi marker的细节使用
verdi使用的时候如果能用上marker,可以在debug的时候提高效率不用为了找信号,来回把波形放到缩小,拖来拖去操作方法:shift+M操作后的debug视图
2020-10-30 11:07:57
3286
原创 verdi 同时改变信号和波形颜色
verdi 改变信号和波形颜色按C或者T修改信号颜色如果需要波形信号名和波形颜色同时改变,要在下面的设置改一下,默认只是信号名称颜色变,波形颜色不变Tools->preferences->waveform->viewoption->waveformpane->general->paint waveform with specified color/pattern正在上传…重新上传取消...
2020-10-30 10:35:41
8646
1
原创 emacs 采用命令行模式自动更新verilog
1.写verilog代码时经常会遇到自动更新的问题,以前都是用emacs打开文档,再ctrl-a + ctrl-x2.但是很多时候初始状态的代码,要经常进行更新,如果能写成脚本更新的话会方便不少。emacs脚本主要使用的两项:1.emacs --batch <filenames.v> -f verilog-batch-indent :功能,对齐2. emacs --ba...
2019-10-25 14:51:45
1357
原创 perl:对应的目录生成,采用调用外部命令shell mkdir
1.写脚本经常会遇到把生成的文件放到指定的目录2.直接调用外部shell mkdir比较方便3.使用mkdir前先判断下该目录是否存在,以免反复运行脚本每次因为目录存在而报warning4.下面代码是生成10000个随机 mem data base。#! /usr/bin/perluse 5.010;use strict;for (my $num=0;$num<...
2019-10-18 10:38:48
565
原创 perl对目录下rtl 包含rtc字符的替换-更新
1.根据版本管理软件sos的特性,每次大量check in 前需要先人工去check下是否有明显错误。2.增加了GetOptions选项,方便只discard,只修改,只check in 和全套的discard-check out-check in3.使用方法./run_001.plx -m./run_001.plx -d./run_001.plx -i./run_00...
2019-10-11 10:22:51
233
原创 perl:使用printf遇到的陷阱记录
在使用句柄打印的时候,经常会使用到如下命令printf $store_fh "$_";如果$_ 里面包含有%b, %d等字符,会被替换成0。这时如果更换为print $store_fh "$_";就不会遇到这种问题。比如针对这个语句...
2019-10-10 17:20:53
197
原创 perl:递归找指定文件并筛选
需求:1.在指定目录下找到指定的文件,并且是递归寻找。比如在某目录下找到对应的.v文件,并剔除掉不需要的目录文件,将筛选好的文件名放到指定的文件下或者存到数组里,供后面使用。采用的是perl File::Find功能#! /usr/bin/perluse 5.010;use strict;use warnings;my @dir = '/proj/../modem/u...
2019-09-26 15:00:21
749
转载 gvim高级操作--环视,查找匹配过滤
1、gvim 环视 匹配关键词 过滤在gvim使用过程中,经常需要查找一些关键词,并且希望采用过滤功能。例如同一个行中,包含A且不包含B的语句,包含A且包含B的语句,不包含A且包含B,不包含A且不包含B的语句。过滤查找功能可以通过环视来实现。正则表达式之环视:\@= 顺序环视,前面字符是重点Eg: 查找字符small,并且后面是cat/small\(cat\)\@=\@! 顺序...
2019-09-25 16:11:44
1552
原创 perl对目录下rtl 包含rtc字符的替换
项目需求:1.根据项目需要,将2bit 或3bit的rtc进行替换为64bit rtc难点:2.由于rtl各层次之间的信号关联会发生变化。3.不同module之间的rtc名字存在相同性。解决办法:1.分析出了lib rtl的输入名都是RTC,因此写脚本的时候把RTC相关的行全部抓出来。2.除了极少部分的名字采用了特殊命名。绝大部分都是采用rf1p_rtc,rf2p_rt...
2019-09-25 15:16:08
175
原创 SVN:版本管理工具
1.最近发现SVN这个版本工具挺好用的。2.不仅可以写代码的时候使用,对于word写的文档也可以很好的进行管理,特别是比对功能非常赞,这个有些惊喜。3.下面把具体的操作流程写一下,以后忘记了可以翻出来看看。第一步:check out第二步:create repository here第三步:add file文件diff关于word diff...
2019-09-19 14:53:16
757
原创 verilog:可综合的function
1.对于频繁使用的计算单元,可以做一个function,减少代码量,增加代码可读性。function [9:0] s_value_function;input [9:0] q_sequence_value;input [3:0] m_polar_len_n;input [10:0] m_polar_len_N;reg [4:0] var_tmp3_value;reg [2:...
2019-09-17 16:31:57
3663
原创 verilog:可综合的verilog
1.multi-dimensional arrays 多维数组可综合。2.signed data types 有符号数据类型可综合。3.part selects +: 和-:可综合。4、<<<,>>> 算术移位可综合。5、function和constant function可综合。6、generate可综合。7、for定量,可综合。...
2019-09-17 15:35:46
2300
原创 perl:文件目录下读取文件操作glob
1.很多时候我们需要处理在一个目录下的同一类型文件。2.可以不用采取读入文件的方式获取目录下的文件名。3.使用glob来获取目录下对应的文件名。...
2019-09-17 11:04:02
1375
原创 perl:打开文件与读取里面的行-demo
1.经常会碰到打开几个文件进行处理。2.容易把文件名和文件里的内容混淆。3.使用钻石操作符可以非常方便的把文件里面内容提取出来。#! /usr/bin/perluse 5.010;open $get_file,'>',"file.txt";foreach my $file (@ARGV){ say "$file"; printf $get_file("%1...
2019-09-16 14:15:41
779
原创 perl:excel寄存器列表生成bus rtl
#!/usr/bin/perl#use Spreadsheet::ParseExcel;use Spreadsheet::ParseXLSX;use 5.010;use Tkx;Tkx::wm_title('.','ASR Register Bus Rtl Generator');Tkx::wm_resizable('.','0', '0');Tkx::ttk__label('...
2019-09-16 11:00:49
980
原创 perl把不匹配的那些行打印出来
1.经常会遇到把不匹配某些特征的行打印出来。可以用!~来操作(含义是不匹配)。#! /usr/bin/perluse 5.010;use strict;if (-e "get_file.txt"){ say "get_file is exist"; unlink "get_file.txt"; say "get_file is delete"; }...
2019-09-16 10:55:06
1541
原创 verdi实用小技巧
verdi改变信号和波形颜色1.按C或者T修改信号或波形颜色mark标记功能2.为方便波形定位,shift+M标记一下ntrace快捷键:l,last view3.状态机标注tools->bus contention,会弹出一个状态机相关的新窗口,直接把它关掉。波形上就可以显示出状态机的值。...
2019-02-21 11:03:40
4869
原创 perl脚本整理
########################################script 1####################################################################################################################################################...
2018-08-14 15:30:00
2658
原创 vim 一般模式切换到命令模式
:n1,n2 w [filename] 将n1到n2的内容保存成filename这个文件 :!command 暂时离开vi到命令行模式下执行command的显示结果。例如,:! ls /home即可在vi当中查看/home下面以ls输出的文件信息...
2018-08-02 15:45:42
4262
原创 vim移动光标的方法
移动光标的方法J 将光标所在行和下一行的数据结合成一行. 不要怀疑。这就是小数点。意思是重复前一个操作的意思。如果你想要重复删除、重复粘贴等操作,按下小数点就好了...
2018-08-02 15:44:30
375
原创 vim复制
yy 复制光标所在的那一行nyy n为数字。复制光标所在的向下n行,例如20yy则是复制20行。y1G 复制光标所在行到第一行的所有数据yG 复制光标所在行到最后一行的所有数据y0 复制光标所在的那个字符到该行行首的所有数据y$ 复制光标所在行的那个字符到该行行尾的所有数据...
2018-08-02 15:43:33
203
原创 DC-电路的设计目标和约束
首先明白DC综合的几个步骤:电路的逻辑综合由三步组成综合=转化+优化+逻辑映射转化:将电路转化成gtech的功能网表优化:根据时序和面积,功耗约束对电路进行优化逻辑映射:将工艺库的逻辑单元映射成门级网表小知识:同步电路:从同一时钟源出来的时钟 clk_1 和clk_2驱动逻辑电路,是同步电路异步电路:从不同时钟源来的clk_1和clk_2驱动逻辑电路,属
2016-09-06 18:53:48
1266
原创 DC-系统模块划分
DC以两种方法修改划分1.自动修改划分compile -auto_ungroup area|delayDC在综合时将自动取消小的模块分区。取消模块分区由变量compile_auto_ungroup_delay_num_cellscompile_auto_ungroup_area_num_cells 来控制两个变量的预设默认值分别是500和30,可以用set修改这两个变量
2016-09-06 15:59:47
1987
原创 芯片综合(DC)实用小技巧
用DC难免会用到各种各样的TCL命令,对其有一个熟练的了解,可以在做综合的时候事半功倍注意:DC的TCL是在标准TCL上定制的。所以会和标准TCL有一定的不同,比如:DC-TCL会有物集的概念详细的DC-TCL信息可以查看synopsis的dc tool commands1.获取整个设计所有的register数目set reg_num 【all_register】 ;#all_
2016-09-02 11:10:31
5688
1
原创 STA基础分析-setup和hold
基础概念1.数据传输需要的时间( Data Arrival Time) : 信号到达时间是指信号到达电路中某一点的真实时间,一般等于信号到达时序路径起点的时间加上信号在该时序路径上传播所用的时间。2.要求到达时间( Data Required Time):指期望信号到达电路中某一点的时间。3.时序裕度(slack):指电路中某点处要求到达时间与实际信号到达时间的差值。4.建立时间(
2016-08-31 11:21:58
17696
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人