IC设计笔记----记录我踩过的坑
来源:互联网 发布:总决赛数据 编辑:程序博客网 时间:2024/06/07 17:31
1、Design
设计功能模块。
首先详细掌握模块功能。
然后定义接口信号,设计模块结构,尽可能复用逻辑资源。
最后再写代码。
注意:接口中的控制信号尽可能用1bit表示,也就是说,模块需要用到的控制信号,尽可能是单个的使能信号。优点是方便以后写代码,如果信号名定义合理,能够一眼看出信号功能,那么还更容易维护。否则,如果信号采用几位数据进行编码,那么在design内部还需要解码,并且不容易看出信号的含义,给维护带来困难。甚至长时间不看,自己写的代码都会忘记功能而看不懂。
例如:
假设一个计算模块,计算类型有加、减、乘、除。
如何定义信号更有利于编写代码及后续维护?
(1)编码信号(强烈不推荐)
定义一个2bits的信号:
signal caozuoleixin : std_ulogic_vector(0 to 1);
– 假设:
00 对应 加
01 对应 减
10 对应 乘
11 对应 除
优点:接口信号数量少。
缺点:看到这个信号,并不能直接知道其含义,造成编写代码困难,也不利于之后对代码的维护。过了一段时间,自己看代码,如果没有清晰的注释,自己都不知道是什么含义。另外,就算有注释,可是你敢保证注释一定正确?就算注释正确,你还要再去核对编码,确认信号功能,费时费力。
所以,编码信号,墙裂不推荐!!!
(2)单bit独立信号
定义4个1bit的信号:
signal add : std_ulogic; – 加
signal sub : std_ulogic; – 减
signal mul : std_ulogic; – 乘
signal div : std_ulogic; – 除
优点:信号功能清晰,方便编写代码,日后维护也更容易。
缺点:接口信号数量增加。不过这一点点缺点,与带来的优点相比,完全可以忍受。
另外,编写代码时,经常有类似的代码段,会图省事直接copy然后修改。这样做,是可以提高效率,但是必须格外小心,要修改的地方,一定要做完整的修改。如果漏掉一些未修改的信号,那么就会在仿真时出错。往往还是一些特别难以找到的错误,匪夷所思的错误。血和泪的教训!!!!
今后,一定在修改的时候千万小心,做到对所有的代码进行了必须要的修改。
2、工具使用
IC工具很多,使用何种工具看公司购买了哪些工具以及个人喜好。我一般使用VCS、Incisive编译仿真代码,用Verdi追信号,GPRO产生测试激励。
2.1 Verdi
使用Verdi看代码追信号,很方便。
如果只是看代码,那么操作很简单。
(1)在Linux命令行中敲入verdi,就会启动Verdi的图形界面GUI。
(2)点击File->Import Design。选择要加载的文件,进行加载即可。注意,GUI只支持Verilog,不支持VHDL。
2.2 VCS
一般用VCS编译仿真,仿真阶段直接用-gui命令看波形,非常方便。
2.3 Incisive
因为工具原因,有些VHDL语法不支持,所以编译现成的库代码都有问题,需要修改。
所以,用的不多。
不过,Incisive有一个强大的功能:force。force直接将内部的寄存器在规定的时刻赋值。这样可以粗暴仿真出功能的波形。
不过,这样做有不科学的地方,最好还是按照从接口信号往内部灌注的方法为好。
- IC设计笔记----记录我踩过的坑
- 码农之记录那些我踩过的坑
- 我踩过的坑
- 记录生命中坑过我的那些人
- 我用过的工具记录
- 现代IC设计学习笔记
- 说说这三四年我用过的语音IC架构
- 我踩过的听过的那些坑
- 记录php踩过的坑
- 记录gis踩过的坑(一)
- 我从事过的设计(目录)
- 晒一下我设计过的板子
- 那些年我踩过的坑
- Android开发,我踩过的坑
- 我做微信支付踩过的坑
- 致我踩过的坑们
- 我的前端开发之路---谨以记录工作中那些踩过的坑,持续更新中~~
- Android插件开发 —— 通过预注册方式打开activity(记录我踩过的坑)
- Leetcode——21. Merge Two Sorted Lists
- 安卓支付宝支付的小坑。。。。
- linux(centos 6.8 64位)下安装JDK8
- imgproc模块--直方图比较
- 项目中js文件修改后浏览器不能及时更新的解决办法
- IC设计笔记----记录我踩过的坑
- HTML 5 <input> required 属性
- CSS3常用功能的写法
- 欢迎使用CSDN-markdown编辑器
- echart在ie8下的bug
- python使用@property
- <MFC> 父窗口与子窗口切换在最前端
- thinkphp发送邮件
- python 学习----使用帮助文档