降低Vivado HLS设计中的LUT利用率(使用蒙哥马利乘法的RSA密码系统)

时间:2017-08-01 20:49:20

标签: rsa fpga vivado vivado-hls montgomery-multiplication

对于有Xilinx Vivado HLS和FPGA设计经验的人来说,这是一个问题/问题:

我需要帮助在HLS范围内减少设计的利用率(即不能仅仅在HDL中重做设计)。我的目标是Zedboard(Zynq 7020)。 / p>

我正在尝试使用Tenca-koc多字基数2蒙哥马利乘法算法在HLS中实现2048位RSA,如下所示(更多算法详细信息here):

enter image description here

我在HLS中编写了这个算法,它在仿真和C / RTL cosim中工作。我的算法在这里:

function iterateObject(obj, f) {
    for (let prop in obj) {
        if (obj.hasOwnProperty(prop)) f(prop);
    }
}

不幸的是,LUT利用率很高。 enter image description here

这是有问题的,因为我需要能够将这些块中的多个块作为axi4-lite从器件安装在硬件中。

有人可以提供一些关于如何在HLS的限制下降低LUT利用率的建议吗?

我已经尝试过以下内容:

  • 尝试不同的字长
  • 将顶级输入切换到阵列,使它们成为BRAM(即不使用ap_uint< 2048>,而是使用ap_uint foo [MWR2MM_e])
  • 尝试各种指令:划分为多个内联函数,数据流架构,lshr的资源限制等。

但是,没有什么能够以有意义的方式降低LUT利用率。是否有一种明显的方式可以降低对任何人都明显的利用率?

特别是,我见过关于mwr2mm算法实现的论文(only use one DSP block and one BRAM)。 这是否值得尝试使用HLS实现?或者,如果不在HDL中描述算法,我是否无法实际控制算法映射到的资源?

感谢您的帮助。

0 个答案:

没有答案