当前位置: 首页 > article >正文

Quartus与Synopsys联合调试

Quartus与Synopsys联合调试

  • 1 文件说明
  • 2 工程创建
  • 3 工程仿真
  • 4 工程管理

本文主要介绍Quartus与Synopsys联合调试的方法,包括如何仿真Altera的IP核乘法器和除法器,芯片型号为Cyclone。

1 文件说明

整个文件系统如图所示,各文件说明如下:

  • run.sh为工程管理脚本
  • run.tcl为Quartus导出的工程创建文件
  • src目录存放所有的源文件
    • rtl目录存放用户的设计文件和仿真文件
    • ip目录存放Quartus创建IP时生成的文件,其中.ip为创建工程时需要,.spd文件为仿真时需要
    • sim目录存放Quartus创建IP时生成跟仿真相关的文件
  • sim目录存放仿真需要的脚本文件
    • filelist.f为设计和仿真文件列表
    • Makefile为make指令文件
    • simlib.sh用于创建vcs脚本
    • synopsys_sim.set.up给出仿真目录
      在这里插入图片描述

2 工程创建

本节主要介绍使用Quartus进行工程创建,执行<安装目录>/bin/quartus启动Quartus,点击File→New Project Wizard创建工程,根据提示设置工程目录、名称和顶层文件,选择FPGA芯片,添加设计文件,设置工具。
点击Tool→IP Catalog打开IP导航栏,在过滤器中输入mult,点击Multiply Adder Intel FPGA IP进行IP设置,在弹出的窗口中File Name为例化IP的名称(mult),新建目录qip,点击Create创建IP,对乘法器IP进行设置,点击Generate HDL生成HDL文件,在弹出的窗口中Create simulation model选择Verilog,仿真器选择VCS,产生VCS需要的文件,点击Generate生成文件。同样的方式添加除法器LPM_DIVIDE Intel FPGA IP,例化名称为divi。在Presets窗口可以保存对当前IP的设置,点击New创建设置文件,下次可以直接使用该文件进行配置。将qip文件夹下的.spd和.ip文件复制到ip文件夹下,便于GitHub管理。
在这里插入图片描述
在这里插入图片描述
点击File→New,选择Verilog HDL File创建源文件,文件保存到src/rtl下,如果已存在源文件,则点击Assignment→Settings,在File下添加源文件,源文件内容如下。点击工具栏的Start Analysis & Synthesis进行综合,综合完之后的层级如下图所示。
在这里插入图片描述

3 工程仿真

仿真通过sim/Makefile中定义的指令进行,各指令作用说明如下:

  • simlib
    首先执行make simlib生成vcs脚本,其内容如下,主要是调用ip-make-simscript生成vcs脚本,simulator定义仿真器,spd定义ip文件,此处为我们添加的两个文件,output-directory定义文件生成位置。
    SRC_DIR="../src"
    QUARTUS_DIR="/media/dengzw/software/Altera/quartus"
    
    rm -rf synopsys/ common/ 
    
    ${QUARTUS_DIR}/sopc_builder/bin/ip-make-simscript \
    --simulator=VCS \
    --spd=${SRC_DIR}/ip/mult.spd \
    --spd=${SRC_DIR}/ip/divi.spd \
    --output-directory=.
    
    执行之后会在sim文件夹下生成common/vcs_files.tcl和synopsys/vcs/vcs_setup.sh,利用这两个文件应该也可以完成仿真,本文不使用这种方法,我们只是从这两个文件提取需要的信息,按照Makefile的流程完成仿真。vcs_files.tcl给出需要的设计文件,根据提示将这些文件复制到src/sim下统一管理。vcs_setup.sh给出额外的设计文件和库文件,altera_lnsim.sv文件前的文件为设计文件,可以添加到filelist.f文件中,该文件及其后面的文件为库文件,不能添加到filelist.f文件中,直接添加到Makefile的指令中。

在这里插入图片描述
在这里插入图片描述

  • comp
    执行make comp编译源文件,相关指令如下。filelist.f给出设计文件和仿真文件,如下图所示。-work后面编译的逻辑目录work,在synopsys_sim.setup中定义其实际目录。
    QUARTUS_INSTALL_DIR = /media/dengzw/software/Altera/quartus
    COMP_OPTS += -full64
    COMP_OPTS += -sverilog
    COMP_OPTS += -timescale=1ns/1ns
    COMP_OPTS += -lca
    COMP_OPTS += -f filelist.f
    COMP_OPTS += +define+FSDB
    COMP_OPTS += -kdb
    COMP_OPTS += -l comp.log
    comp:
      vlogan -work work $(COMP_OPTS) \
      $(QUARTUS_INSTALL_DIR)/eda/sim_lib/altera_lnsim.sv \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/cyclone10gx_atoms.v \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/synopsys/cyclone10gx_atoms_ncrypt.v \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/synopsys/cyclone10gx_hssi_atoms_ncrypt.v \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/cyclone10gx_hssi_atoms.v \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/synopsys/cyclone10gx_hip_atoms_ncrypt.v \
      -v $(QUARTUS_INSTALL_DIR)/eda/sim_lib/cyclone10gx_hip_atoms.v \
      +incdir+$(QUARTUS_INSTALL_DIR)/eda/sim_lib
    
    在这里插入图片描述
  • elab
    执行make elab编译生成仿真工具simv,相关指令如下,TB_TOP_MODULE_NAME定义顶层模块的名称。
    TB_TOP_MODULE_NAME = tb
    ELAB_OPTS += -full64
    ELAB_OPTS += -sverilog
    ELAB_OPTS += -timescale=1ns/1ns
    ELAB_OPTS += -debug_access+all
    ELAB_OPTS += -kdb
    ELAB_OPTS += -cpp g++-4.8 -cc gcc-4.8 
    ELAB_OPTS += -LDFLAGS -Wl,--no-as-needed
    ELAB_OPTS += -l elab.log
    elab:
      vcs work.$(TB_TOP_MODULE_NAME) $(ELAB_OPTS) 
    
  • run
    执行make run开始仿真,生成波形文件fsdb。
    RUN_OPTS += -l run.log
    run:
      ./simv $(RUN_OPTS)
    
  • verdi
    执行make verdi打开窗口查看波形。

4 工程管理

使用run.sh和run.tcl对工程进行管理,点击Quartus的Project→Generate Tcl File for Project创建工程的tcl脚本,run.sh的内容如下,执行./run.sh clean清除所有文件,执行./run.sh tcl创建工程,执行./run.sh qts打开工程。由于新创建的工程没有ip的生成文件,所以需要点击ip重新生成编译文件,否者编译会报错。

QUARTUS_INSTALL_DIR="/media/dengzw/software/Altera/quartus/"

if [ "$1" == clean ]; then
  rm -rf dni output_files qdb tmp-clearbox
  rm -rf *.log* *.save *.rec *.qpf *.qsf *.qws .db* 
elif [ "$1" == qts ]; then
  $QUARTUS_INSTALL_DIR/bin/quartus *qpf
elif [ "$1" == tcl ]; then
  $QUARTUS_INSTALL_DIR/bin/quartus_sh -t run.tcl
else
  echo "Error: no parameter matched."
fi

http://www.kler.cn/a/468105.html

相关文章:

  • 安卓漏洞学习(十六):unicorn在逆向中的使用
  • 数学建模入门——描述性统计分析
  • vue3组件化开发优势劣势分析,及一个案例
  • ECCV`24 | 首次解决文本到3D NeRFs分解问题!港中文等提出DreamDissector
  • pip error: microsoft visual c++ 14.0 or greater is required
  • 用QT实现 端口扫描工具1
  • Golang中的通道和缓冲区
  • 计算机网络相关术语
  • 2025加密风云:行业变革与未来趋势全景透视
  • 2025/1/4期末复习 密码学 按老师指点大纲复习
  • 【51项目】51单片机自制小霸王游戏机
  • 【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus
  • 医学图像分析工具02:3D Slicer || 医学影像可视化与分析工具 支持第三方插件
  • AI辅助的运维流程自动化:实现智能化管理的新篇章
  • connect to host github.com port 22: Connection timed out 的解决方法
  • R语言的数据结构
  • 城市供水管网多普勒超声波流量计,保障供水安全
  • 【游戏设计原理】46 - 魔杖
  • 一种新的混合大模型架构:TITAN
  • 【Python运维】使用Python与Docker进行高效的容器化应用管理
  • Tomcat性能优化与负载均衡实现
  • 为什么 SPA 应用会提供一个 hash 路由,好处是什么
  • sqlserver sql转HTMM邮件发送
  • 【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算
  • 【Stable Diffusion】AI生成新玩法:图像风格迁移
  • 用Python操作字节流中的Excel工作簿