大型SoC的设计:大部分时间在做优化,设计,写代码是其次。更多的是Debug
衡量仿真的效率:仿真速度快,CPU资源少,内存少
这节课并不是最重要的,但是涉及仿真的高效性和思想
课程目标
- 好的编码风格
- 利用VCS提供的开关选项, +rad开关
工具其实有限的,最重要的是人的设计
1. 仿真的效率
PPT1
- 适当的选择开关选项
- 三个小问题改完了再去编译,而不是盖一个编译一次,门级仿真编译更慢
PPT2 VCS的架构
VCS处理代码的过程
第一遍就考虑把事情做好,一气呵成
2. 通用代码建议
PPT1
- 可综合Verilog语法集
- 提升你的抽象层次,RTL级>门级>原语级。后仿真(门级)的速度很慢,适当的用状态机
- 避免效率的低的语句,原语级,双向口
- 使用小的激励块,module不要写的太大,不利用维护,激励多用task去包装。
- 使用基于文本的激励输入readmemh,是否dump数组到波形
readmenh和writemenh用的最多,最后把结果保存到文本文件中
PPT2
在设计里面避免
PPT3
- 避免门级结构 (gate-level UDP)
- 数据类型,常用reg wire 和integer
- 跨模块的引用
3. VCS优化代码方法
PPT1
PPT2 使用rad优化的例子1
PPT3 使用rad优化例子2
PPT4
PPT5 配置文件
4. prof性能分析
PPT1
统计分析哪个模块占用资源比较多
PPT2
PPT3
PPT4 报告的内容
PPT5
5. 实验环节
- 没有加的仿真时间
加上了+rad
的仿真时间
- 加上了编译型的开关
+prof
,多出了vcs.prof
文件
warning
可以看看,有帮助
性能分析,往往是针对大型的项目
gVim下删除一行的快捷键的连线敲两个d
-
+prof
未来的版本不支持该命令改用+simprofile
-
例化多个模块,
generate
例化module是不能用数组的
例如1000个计数器下
后面讲了
-
打印出带颜色的字体