使用开源EDA工具进行ASIC综合和时序分析, 用于了解前端RTL设计的时序情况并快速迭代. 用到的开源EDA工具包括:
-
开源综合器Yosys
-
iEDA团队自研的开源EDA工具集, 这些工具会被编译成一个二进制文件
iEDA
, 本项目中用到的子工具包括- 网表优化工具iNO
- 静态时序分析(STA)工具iSTA
-
根据iEDA团队的介绍, iSTA有以下优势
- 通过TCL命令操作, 使用简单, 能满足常用的时序分析需求
- 开源协议限制少: 相对地, OpenRoad项目的OpenSTA项目由于开源协议限制,不能随意修改和发布
- 代码结构清晰, 可修改和扩展性强: 团队将持续迭代更新, 以更好支撑开源芯片设计
-
iSTA的一些参考资源:
- iSTA的源代码
- iSTA的报告解读可参考这个视频
- iSTA的内部技术可参考第一期iEDA Tutorial
-
iEDA团队的完整工作可参考以下文章
-
目前支持开源PDK nangate45, 具体可在安装依赖(见下文)后阅读nangate45的README
apt install yosys
apt install libunwind-dev libyaml-cpp-dev libgomp1 libtcl8.6 # iEDA的依赖库
make init
项目包含一个样例设计GCD, 可通过以下命令进行综合, 并评估其在nangate45工艺上的时序表现.
make sta
运行后, 可在result/gcd-500MHz/
目录下查看评估结果. 部分文件说明如下:
gcd.netlist.syn.v
- Yosys综合的网表文件synth_stat.txt
- Yosys综合的面积报告synth_check.txt
- Yosys综合的检查报告, 用户需仔细阅读并决定是否需要排除相应警告yosys.log
- Yosys综合的完整日志gcd.netlist.fixed.v
- iNO优化扇出后的网表文件fix-fanout.log
- iNO优化扇出的日志gcd.rpt
- iSTA的时序分析报告, 包含WNS, TNS和时序路径gcd.cap
- iSTA的电容违例报告gcd.fanout
- iSTA的扇出违例报告gcd.trans
- iSTA的转换时间违例报告gcd_hold.skew
- iSTA的hold模式下时钟偏斜报告gcd_setup.skew
- iSTA的setup模式下时钟偏斜报告sta.log
- iSTA的日志
有两种操作方式:
- 命令行传参方式, 在命令行中指定其他设计的信息
make sta DESIGN=mydesign SDC_FILE=/path/to/my.sdc RTL_FILES="/path/to/mydesign.v /path/to/xxx.v ..." CLK_FREQ_MHZ=100
- 修改变量方式, 在
Makefile
中修改上述变量, 然后运行make sta
注意:
- 在
RTL_FILES
的文件中必须包含一个名为DESIGN
的module - sdc文件中的时钟端口名称需要与设计文件保持一致, 具体内容可参考样例设计GCD中的相应文件
如果在运行时遇到bug, 可在issue中报告问题, 并提供如下信息:
- 相应的RTL设计
- sdc文件
- yosys生成的网表文件
- iEDA的版本号, 可通过命令
echo exit | ./bin/iEDA -v
获取