高级综合工具Stratus学习笔记(1)

这篇博客详细介绍了Stratus HLS工具的使用,包括工程所需文件如设计文件、TB文件、system文件、main文件、project.tcl和Makefile的编写和作用。还讲解了Stratus的操作方式,如makefile生成、高级综合和仿真的步骤,以及在debug过程中遇到的fsdb连接错误的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次学习参考Stratus内置的学习例程(simple_p2p),学习内容主要如下所示:

  • Stratus HLS软件运行需要的必要文件及其写法
  • Stratus HLS软件操作方式
  • Stratus HLS内置的p2p端口的基本使用(非流水线)
  • Stratus HLS自定义数据类型

1.Stratus HLS必要文件与写法

Stratus工程所需要的文件如下图所示:

文件 类型 说明
设计文件 cpp+h 描述设计的头文件和cpp文件
TestBench cpp+h 描述测试平台的头文件和cpp文件
System cpp+h 连接设计文件和TestBench的头文件和cpp文件
main.cpp cpp 整个仿真平台的顶层文件
project.tcl tcl 指定工程配置(仿真选项和综合选项)的tcl文件
Makefile makefile 由project.tcl生成的makefile文件

1.1.设计文件

设计文件的头文件如下所示:

#ifndef __NEW1__H
#define __NEW1__H

#include "cynw_p2p.h"  // p2p端口的头文件,如需使用cynw_p2p则需要引用该头文件

#include "new1_input_type.h" // 类型new1_INPUT_DT的头文件
#include "new1_output_type.h" // 类型new1_OUTPUT_DT的头文件

SC_MODULE(new1) {  // 定义模块new1
    public:
    cynw_p2p < new1_INPUT_DT  >::in     inputs;  // 一个p2p输入端口
    cynw_p2p < new1_OUTPUT_DT >::out    outputs; // 一个p2p输出端口
    
    // Declaration of clock and reset parameters
    sc_in_clk               clk;                 // 时钟端口,类型为sc_in_clk
    sc_in < bool >          rst;                 // 复位端口
    SC_CTOR(new1):inputs("inputs"), outputs("outputs"), clk("clk"), rst("rst") {// 构造函数
        SC_CTHREAD(thread1, clk.pos());          // 定义线程thread1,绑定时钟上升沿
        reset_signal_is(rst,0);                  // 定义复位为0时有效
        
        // Connect the clk and rst signals to the metaports
        inputs.clk_rst(clk, rst);                // 绑定输入端口的时钟和复位
        outputs.clk_rst(clk, rst);               // 绑定输出端口的时钟和复位
    }
    void thread1();
    
    new1_OUTPUT_DT my_function(new1_INPUT_DT);
};

#endif

在设计头文件中,定义了一个模块new1,具有一个p2p输入端口和一个p2p输出端口以及时钟和复位端口,并声明函数thread1为线程,为其绑定了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值