Quartus与Synopsys综合使用


本文主要介绍Quartus与Synopsys综合使用方法,包括如何仿真Altera的IP核FIFO(芯片型号为Agilex),以及如何编译工程和下板调试。

1 设计文件

按照《Quartus与Synopsys联合调试》方法例化FIFO IP,编写顶层文件top.v和仿真文件tb.v,top.v主要是例化FIFO,并控制数据的写入和读出,例化了In-System Sources and Probes,类似于Vivado的VIO,为虚拟输入输出。tb.v文件为仿真文件,启动数据的写入和读出。

2 功能仿真

2.1 Shell脚本仿真

执行make simlib创建vcs_files.tcl和vcs_setup.sh,将这两个文件复制到sim文件夹下,修改vcs_setup.sh文件,修改下述几个变量的值,并且修改vcs_files.tcl的位置。file.f中的文件列表只需要给出用户自定义的设计文件和仿真文件,此处为top.v和tb.v。

TOP_LEVEL_NAME="tb" #修改为实际的顶层文件
SIM_DIR="../../sim" #设置仿真目录
SKIP_SIM=1 #跳过仿真
USER_DEFINED_ELAB_OPTIONS="-f file.f -full64 +define+FSDB -kdb -debug_access+all -o $SIM_DIR/simv" #添加文件列表等编译选项
USER_DEFINED_ELAB_OPTIONS_APPEND="-l $SIM_DIR/elab.log -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed" #添加编译选项
USER_DEFINED_SIM_OPTIONS="+vcs+finish+200000" #修改仿真时长,单位为ps
-timescale=1ns/1ns #修改仿真精度
mv csrc $SIM_DIR/csrc #将仿真文件移动到仿真目录,不上传git

执行make run进行仿真,make verdi打开波形文件,其波形如下,FIFO的模式设置为Normal FIFO mode,rdreq有效后数据才有效,即rdreq的下一个周期数据q才有效。
在这里插入图片描述

2.2 Makefile脚本仿真

按照《Quartus与Synopsys联合调试1》方法使用Makefile相关文件,在此处将vcs_setup.sh中所有的设计文件和库文件都复制到filelist.f中,并在Makefile的编译选项中添加COMP_OPTS += -error-noMPD,解决vlogan编译文件时出现the module was previously declared的错误。依次执行make compmake elabmake runmake verdi完成文件的编译和仿真,仿真波形如下,FIFO的模式设置为Show-ahead FIFO mode,rdreq有效时数据即有效。
在这里插入图片描述

3 工程编译

点击Quartus工具栏的Pin Planner打开引脚分配界面,按照实际的板卡进行引脚分配,JTAG引脚不用分配。
在这里插入图片描述
进行下述设置,否则下载sof文件时会提示 File filename.sof is incomplete - Power management settings are not set up appropriately on VID part。设置完成后点击工具栏的Start Compilation进行工程的完整编译。

  • 点击Assignments→Device→Device and Pin Options→Configuration→Configuration Pin Options,根据F26A硬件进行下述设置
    在这里插入图片描述
  • 点击Assignments→Device→Device and Pin Options→Power Management and VID,根据F26A硬件进行下述设置
    在这里插入图片描述

4 下载调试

下载程序前需要先安装驱动,在Ubuntu20下,在/etc/udev/rules.d目录下创建文件92-usbblaster.rules,在文件中添加下述语句。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0666"

点击Tools→Programmer打开下载界面,Hardware Setup选择器件,点击Start下载程序
在这里插入图片描述
点击Tools→Signal Tap Logic Analyzer进行创建,首先选择Hardware,连接到芯片。
在这里插入图片描述
然后配置时钟,在弹出的Node Finder窗口中,Named输入*,在 Filter 下选择哪个阶段的信号, 因为综合时会进行优化,有些信号可能找不到,所以一般选择 pre-synthesis 或 Design Entry, 点击Search可以看到节点名, 选择采样时钟,注意采样时钟不一定是工程里的时钟,内部任何信号都可以是采样时钟。选择采样深度,也就是采多少个点,这也是看具体情况而定,深度越大,需要的资源越多,这里保持512, 即总共能看到 512 个采样点数据。
在这里插入图片描述
在这里插入图片描述
确保已选中 Setup 标签,然后双击红圈所示区域, 以之前所说的方法选择需要观察的数据。
在这里插入图片描述
选择Tools→In-System Sources and Probes Editor打开虚拟输入输出控制器,同样进行Hardware相关配置。
在这里插入图片描述
在 Quartus 界面下,点 Save all 以保存所有文件,然后重新进行编译。再回到 Signal Tap 界面下,选择.sof 文件(在工程项目下的 output_files 文件夹下),然后下载。成功下载 sof 后,可以看到Ready to acquire。而 Instance Manager 右边有四个图标,分别代表单次运行,连续运行,停止和读数据。 如果不停止掉 Signal Tap,是不能综合代码的。下载完程序之后出现下图所示现象,虽然已经显示Ready to acquire,但提示Instance not found,且采样的按钮为灰色,无法使用。选中auto_signaltap_0,采样的按钮就能使用了。
在这里插入图片描述
先停止 Signaltap,然后在 Setup 标签下,勾选条件触发下面的 Basic AND,然后在输入想要的触发条件,Basic AND是所有触发条件(可同时设置多个信号的触发条件)相与之后为真,就触发采样。这里设置source的值为3,即复位之后开始往FIFO写入数据时进行触发。 当然也可以选择 Basic OR(相或为真就触发采样)和 Advanced。对于bus信号,可以直接输入数值,而对于net信号,右键选择触发条件。 一般用上面的方法设置条件触发就够用了,如果有特殊要求,就用 Signal Configuration 下的条件触发,会有更强大的功能。
在这里插入图片描述
点击工具栏的Run Analysis进行单次采样,打开In-System Sources and Probes Editor,点击下图选项同步虚拟输入输出端口的数值。然后将source的值依次设置为1和3,先取消复位,然后将数据写入FIFO。
在这里插入图片描述
回到Signal Tap窗口查看触发波形,将鼠标放置到波形窗口,点击鼠标左键为放大波形,点击鼠标右键为缩小波形,或者直接选中需要观察的波形片段。在需要观察的信号上右键选择 Bus Display Format 下,可以选择不同的数据格式,以方便观察。其中 unsigned/signed line chart 是用来观察连续信号的波形。在标尺处选择 Time Units,可以设置时间单位。我这里的采样时钟频率为100MHz,即周期为10ns。这样 Signal Tap 每采一个数据的周期就是10ns。点击File→Export,可以把 Signal Tap 采样到的数据保存为其它格式的文件,其中有csv、tbl、bmp、jpg、vcd五种格式可选,其中 csv 格式适合配合 MATLAB 使用。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值