软件思维 硬件思维

软件思维  硬件思维 一、指令优化C/C Algorithm|v[1. 接口设计] - #pragma HLS INTERFACE (m_axi, ap_fifo, ap_hs)|v[2. 任务级并行] - #pragma HLS DATAFLOW hls::stream|---------- 对sub_function必须要保证对立性也就是sub_function要使用函数#pragma HLS inline|---------- 对LOOP使用pipeline优化v[3. 循环级优化] - #pragma HLS PIPELINE (核心) UNROLL|v[4. 存储级优化] - #pragma HLS ARRAY_PARTITION (解决PIPELINE的RAM端口瓶颈)|v[5. 位宽优化] - ap_intN / ap_fixedW,I|vRTL (Verilog/VHDL) Co-sim Verification二、代码结构修改1.尽量写可并行化的代码2.尽量写无依赖的代码三、软件思维 硬件思维1.c是顺序执行的是在时间轴上运行2.rtl是空间维度 时间维度上的rtl是空间维度的并行3.C的执行在不考虑多线程前提下都是顺序执行的只有逻辑顺序的先后rtl是有颗粒度的引入了时钟周期和延迟。4.关于存储模式C访问可以是cache内存以及磁盘文件操作使用的是磁盘IO或者内存数据访问可以是CPU中的寄存器也可以是cache或者内存中的堆和栈但是RTL访问的是LUT,FF,REG,RAM,URAM,DDR5.评估标准frequency II latencyLUT,FF,BRAM,DSP