FPGA基础知识(四)UG902 RTL仿真与输出

本文是我在学习FPGA时学到的相关知识与总结,希望可以帮助同行理解和掌握相关的FPGA知识。可以将本文档当作相应FPGA教程文档UG902的辅助文档学习。主要内容为文档中关于RTL simulation and export。转载请注明出处。

Xilinx原版教程文档参见Xilinx Documentation navigator 中对应UG902:Vivado Design Suite User Guide High-Level Synthesis中的Verifying the RTL部分。

背景:c语言通过高层次综合(HLS)综合为相应的硬件RTL语言。再此之前进行了c的仿真,相应的硬件优化,然后下面需要进行c与RTL的协同仿真、RTL仿真及RTL输出。

目录

验证RTL(Verifying the RTL)

C/RTL cosimulation

在c/RTL协同综合时必须满足下面要求:

Test Bench的要求

接口综合的要求

执行RTL simulation

Verificaiton of directives

分析 RTL simulation

Export the RTL design


验证RTL(Verifying the RTL)

C/RTL cosimulation

C/RTL协同综合会将之前的c test bench继续用在RTL 综合之中。

  • C在仿真时,最高级别函数的输入或者DUT(device under test)会被当作输入向量
  • 输入向量会在RTL仿真时由vivado HLS创建,RTL的输出会被存为输出向量
  • RTL仿真的输出向量会被用在c test bench上,在函数进行synthesis之后来验证结果的正确性。

在c/RTL协同综合时必须满足下面要求:

test bench必须能够自我检测并且返回0值,并且在测试失败时返回非0值

  • 接口综合时要用到正确的接口
  • 任何第三方模拟器必须能在路径中被找到
  • 任何不能被优化指令优化的数组和结构体设计接口都必须在Unsupported Optimizations for Cosimulation中指出。

Test Bench的要求

mian函数返回零值则结果正确,返回非零值则结果不正确。

接口综合的要求

用C/RTL cosimulation来验证RTL设计时,下面要求必须要满足:

  • top-level function必须用ap_ctrl_hs或者ap_ctrl_chain的块级别的接口
  • 设计必须可以被结合
  • Top-level function必须有initiation intervl of 1
  • 接口的array必须被streaming或者被implemented with ap_fifo或者ap_hs axis接口

第一次勾选的是VHDL,并且没有勾选optimizing compile选项,运行一整晚卡在一个地方。现在我们运行verilog,并且勾选Optimizing compile选项。

以下选项含义(UG902 Using C/RTL co-simulation):

  • Setup Only: 只创建所需要的文档(wrappers, adapters, and scripts),只运行simulation但不执行simulator,要想执行在RTL文件夹下<solution_name>/sim/<RTL>.运行
  • Dump Trace:会生成一个trace 文档,在<solution>/sim/<RTL>文档中,可以选择trace的信号,例如top-level的端口。具体内容参见RTL simulator
  • Optimizing Compile:会增加compile的时间,但是simulation会执行的更快
  • Reduce Disk Space:TRL simulation会产生大量数据,此步可以把分成N个分开的RTL仿真,但是会运行变慢。
  • Compiled Library Location:确定compiled library的位置,以便于用第三方的RTL simulatior
  • Input Arguments:为test bench确定任何输入的arugments

执行RTL simulation

vivado HLS在RTL simulation中的project的子目录中运行<SOLUTION>/sim/<RTL>,SOLUTION是solution的name,RTL是用于仿真的RTL type

所有c test bench写入的文档和co-simulation生成的trace files都会被写入这个目录下。

Verificaiton of directives

这部分不太懂,主要讲DEPENDENCE,DATAFLOW, FIFO,STREAM这些优化相关的东西,在文档P196,看完优化再回来看。

分析 RTL simulation

当c/RTL cosimulation结束时,simulation reports生成,并且显示测量得到的latenc和II,可能与HLS synthesis之后生成的report不同。

在没有pipeline的设计之中,C/RTL cosimulaton将latency定为ap_start与ap_done之间的信号。pipeline中,latency就是data input与data output之间的时钟周期。

Debug C/RTL cosimulutio略过,有点繁琐。

Export the RTL design

vivado HLS的最终步骤就是生成一个IP block。RTL设计可以被package成以下形式:

  • IP Catalog formatted IP(用于Vivado Design suite)
  • System Generator for DSP IP(用于Vivado System Generator for DSP)
  • Synthesized Checkpoint(.dcp)

vivado HLS将相应的c语言生成RTL语言,从而生成相应的硬件模块用于以后的系统设计。(导入相应的RTL语言,应该就是IP core)

猜你喜欢

转载自www.cnblogs.com/1057945230atqqdotcom/p/10695329.html