【问题标题】:Why does vivado HLS split this ap_memory interface?为什么vivado HLS会拆分这个ap_memory接口?
【发布时间】:2022-06-15 16:40:41
【问题描述】:

所以我有以下代码:

int post_quantum_kem_encr(  unsigned char m[32],
                            unsigned char pk[800],
                            unsigned char coin[32],
                            unsigned char c[736]) {
#pragma HLS INTERFACE ap_memory port = m
#pragma HLS INTERFACE ap_memory port = pk
#pragma HLS INTERFACE ap_memory port = coin
#pragma HLS INTERFACE ap_memory  port = c
#pragma HLS INTERFACE ap_none port = return

  some_crypto(m, pk, coin, c);


  return crypto_kem_enc_def;
}

将其合成并导出为 IP 会产生以下 IP 块:

我的问题是,为什么c 会分成c_d0c_d1? (pkcoin 也是如此。)m 不会发生这种情况,所以它似乎是某种优化。然而,我希望它只是对我连接到的内存元素进行直接的单字节访问。

【问题讨论】:

    标签: vivado vivado-hls


    【解决方案1】:

    似乎 Vivado HLS 试图将端口 c 视为 2 端口内存的接口。您可以尝试添加以下指令来强制 1 端口模式: #pragma HLS RESOURCE 变量=c core=RAM_1P

    这个解决方案可能看起来像要求使用FPGA的内部RAM,但它似乎只是配置了ap_memory接口。

    附:我在这里找到了一些相关信息(他们使用 core=RAM_2P_BRAM 来强制使用 2 端口接口):https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2014_3/ug871-vivado-high-level-synthesis-tutorial.pdf; pages 78-82

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2015-12-05
      相关资源
      最近更新 更多