回答

收藏

[评测分享] 【树莓派5 测评】 + 09.基于iverilog的RTL仿真(zmj)

#板卡评测 #板卡评测 3298 人阅读 | 0 人回复 | 2024-04-27

【树莓派5 测评】 + 09.基于iverilog的RTL仿真(zmj)
对于FPGA或者RTL爱好者来讲,树莓派5开发板可以运行RTL仿真,仿真工具使用iverilog,波形工具使用gtkwave。为什么是这些?因为工具免费且对硬件性能要求更少……
1.        工具简介
iverilog 和 GTKwave 的安装非常便捷。
1.1        iverilog
Icarus Verilog 是一个轻量级的 verilog 仿真工具,以编译器的形式工作,将以 verilog 编写的源代码编译为某种目标格式。如果要进行仿真的话,它可以生成一个叫做 vvp 的中间格式。这个格式可以由其所附带的 vvp 命令执行。
1.2        GTKwave
GTKwave是一款免费的波形查看器,可以用于查看标准的 verilog VCD/EVCD,以及其他一些格式的波形文件。
1.3        环境安装配置
环境配置主要是仿真软件iverilog、波形软件gtkwave的安装。
  1. //------环境安装配置
  2. # 安装iverilog仿真软件
  3. sudo apt install iverilog
  4. 或者
  5. sudo apt-get install iverilog
  6. # 安装gtkwave
  7. sudo apt install gtkwave
  8. 或者
  9. sudo apt-get install gtkwave
  10. //------
  11. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/heart_rtl$ iverilog -V
  12. Icarus Verilog version 11.0 (stable) ()
  13. Copyright 1998-2020 Stephen Williams
  14. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/heart_rtl$ vvp -V
  15. Icarus Verilog runtime version 11.0 (stable) ()
  16. Copyright 1998-2020 Stephen Williams
  17. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/heart_rtl$ gtkwave -V
  18. GTKWave Analyzer v3.3.118 (w)1999-2023 BSI
  19. This is free software; see the source for copying conditions.  There is NO
  20. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  21. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$
复制代码

2.        仿真测试
安装完所需软件之后,准备仿真文件进行仿真测试。仿真测试流程及结果参考下方记录。
  1. //------仿真测试
  2. //---流程
  3. 编辑源码 --> 执行仿真,输出仿真结果 --> 导出波形 --> 查看波形
  4. //---指令
  5. a.编辑源码:
  6. 编写任意rtl代码,此处设计了加法器和波形仿真,详细代码参考**代码截图。
  7. /wave_rtl
  8. .
  9. ├── tb_wave.v      //仿真顶层文件
  10. ├── dut_add.v      //加法器
  11. ├── wave_rtl.v     //读取文件,输出波形
  12. └── init_wave.txt  //初始化文件
  13. 在“tb_wave.v”中使用了系统函数 dumpfile 用来在运行仿真时生成 .vcd 波形文件;
  14. dumpvars 表示选择记录哪些信号,直接加分号结束表示记录设计中所有信号。
  15. b.执行仿真,输出仿真结果:
  16. iverilog -o test.out tb_wave.v dut_add.v wave_rtl.v
  17. “-o”选项用来指定输出文件,执行完仿真之后,输出仿真结果test.out文件。
  18. c.导出波形:
  19. vvp -n test.out
  20. test.out是目标可执行文件,但此文件执行后只会在终端上显示仿真时文字信息,需要使用 vvp 工具将其可视化成 .vcd 文件。
  21. 其中“-n”选项表示运行完退出,以便进行下一步操作。
  22. d.查看波形:
  23. gtkwave wave.vcd
  24. 用 GTKwave 打开并显示出波形。
  25. //------示例Log
  26. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$ ll
  27. total 28
  28. drwxr-xr-x 2 zhaomeijing zhaomeijing 4096 Apr 27 14:46 ./
  29. drwxr-xr-x 4 zhaomeijing zhaomeijing 4096 Apr 27 14:47 ../
  30. -rw-r--r-- 1 zhaomeijing zhaomeijing  314 Apr 27 11:50 dut_add.v
  31. -rw-r--r-- 1 zhaomeijing zhaomeijing 4128 Apr 27 13:05 init_wave.txt
  32. -rw-r--r-- 1 zhaomeijing zhaomeijing 1905 Apr 27 13:03 tb_wave.v
  33. -rw-r--r-- 1 zhaomeijing zhaomeijing 2168 Apr 27 13:06 wave_rtl.v
  34. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$ iverilog -o test.out tb_wave.v dut_add.v wave_rtl.v
  35. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$ ll ; vvp -n test.out ;
  36. total 36
  37. drwxr-xr-x 2 zhaomeijing zhaomeijing 4096 Apr 27 14:49 ./
  38. drwxr-xr-x 4 zhaomeijing zhaomeijing 4096 Apr 27 14:47 ../
  39. -rw-r--r-- 1 zhaomeijing zhaomeijing  314 Apr 27 11:50 dut_add.v
  40. -rw-r--r-- 1 zhaomeijing zhaomeijing 4128 Apr 27 13:05 init_wave.txt
  41. -rw-r--r-- 1 zhaomeijing zhaomeijing 1905 Apr 27 13:03 tb_wave.v
  42. -rwxr-xr-x 1 zhaomeijing zhaomeijing 7510 Apr 27 14:49 test.out*
  43. -rw-r--r-- 1 zhaomeijing zhaomeijing 2168 Apr 27 13:06 wave_rtl.v
  44. WARNING: wave_rtl.v:32: $readmemh(init_wave.txt): Too many words in the file for the requested range [0:1023].
  45. VCD info: dumpfile wave.vcd opened for output.
  46. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$ ll
  47. total 60
  48. drwxr-xr-x 2 zhaomeijing zhaomeijing  4096 Apr 27 14:50 ./
  49. drwxr-xr-x 4 zhaomeijing zhaomeijing  4096 Apr 27 14:47 ../
  50. -rw-r--r-- 1 zhaomeijing zhaomeijing   314 Apr 27 11:50 dut_add.v
  51. -rw-r--r-- 1 zhaomeijing zhaomeijing  4128 Apr 27 13:05 init_wave.txt
  52. -rw-r--r-- 1 zhaomeijing zhaomeijing  1905 Apr 27 13:03 tb_wave.v
  53. -rwxr-xr-x 1 zhaomeijing zhaomeijing  7510 Apr 27 14:49 test.out*
  54. -rw-r--r-- 1 zhaomeijing zhaomeijing  2168 Apr 27 13:06 wave_rtl.v
  55. -rw-r--r-- 1 zhaomeijing zhaomeijing 20948 Apr 27 14:50 wave.vcd
  56. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$ gtkwave wave.vcd

  57. GTKWave Analyzer v3.3.118 (w)1999-2023 BSI

  58. [0] start time.
  59. [3795000] end time.
  60. WM Destroy
  61. zhaomeijing@raspberrypi5:~/workspace/13_rtl_sim/wave_rtl$
复制代码
//------仿真源码
//------运行仿真,查看波形
//------完整仿真波形

//------end

关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条