Zebu学习笔记(3)- 编译

Zebu采用一个Unified Compile Flow, 整个Design和Testbench都统一通过VCS管理和编译,对于VCS的调用也是通过UTF工程文件定义的。

UTF文件包含系统编译的所有信息,包括VCS编译和Zebu后端(类似综合布局布线)的所有操作,所有操作均由zCui完成,VCS编译过程会处理所有Design相关的源文件,为了有效的Porting,我们可以直接重用仿真环境的VCS脚本。

前面文章中,我们多次提到过UTF命令,这里我们列举几个必须用到的UTF命令:

命令描述
architecture_file -filename {<path_to_zse_configuration.tcl>}指定系统硬件配置的tcl描述文件
vcs_exec_command{<script_name_with_path>}指定Design用到的VCS命令
set_hwtop –module <design_top_module_name>指定项目的顶层模块

一个最为精简的UTF文件:

architecture_file -filename /path/to/zse_configuration.tcl 
vcs_exec_command /path/to/vcs_script.sh
set_hwtop -module hwtop

VCS编译脚本

VCS脚本主要完成以下的一些操作:

  • 定义RTL源文件
  • 定义设计使用的语言
  • 定义编译生成的库文件
  • 定义设计的顶层模块名称
  • 定义顶层模块例化的参数信息
  • 定义包含路径
  • 定义顶层宏定义
  • 定义库目录
  • 定义Verilog库文件扩展名

一般情况下我们直接使用仿真环境中用到的VCS脚本就可以了,所以这里关于VCS脚本的写法就不详述了。

UTF中常用的一些配置信息

定义Zebu硬件结构

architecture_file -filename {<path_to_zse_configuration.tcl>}

定义VCS仿真命令

vcs_exec_command {<script_name_with_path>}

定义顶层模块名

set_hwtop -module <design_top_module_name>

定义调试信号

debug -waveform_reconstruction true -> csa and simzilla

定义verdi编译仿真

debug -verdi_db true

定义运行后调试

debug -use_offline_debug true

定义Design大小

design_size -mode auto

定义自动生成zCores

clustering -system_auto_core_generation true

定义FPGA相关参数

clustering -resource_usage MEDIUM
fpga -enable_parff MULTI_STAGE
profile -compile true

开始编译

个人比较喜欢批处理模式的编译形式,Zebu的编译都是通过zCui实现的,当我们准备好相应的utf文件之后,我们就可以开始我们的编译过程,编译过程主要通过以下的命令实现:

zCui –c -n -u <project_name>.utf [-w <zcui_uc_work_dir>]

如果没有意外,我们应该可以完成编译过程,得到运行过程所需的文件。

相关文章

发表新评论