如何使用Vivado为Modelsim加密文件

时间:2016-05-12 13:21:02

标签: encryption vhdl vivado

供应商正在使用一种工具将一些代码编译成原始VHDL。他们不希望我看到原始代码,而是希望加密输出文件。目前,他们使用Vivado将其加密为EDIF网表。

在实施设计时这很好;我把它当作一个黑盒子,使用i / o的包装器并写入比特流。他们确保我们的黑匣子设计工作。我确实看到我的资源使用情况达到了我的预期,但我想模拟并验证他们的结果。

当尝试使用modelsim进行模拟时,它当然不知道如何解密这些文件。如果将网表列入VHDL,则只会出现错误:

# ** Error: Formatter.vhd(58329): near "AES128-CBC": Unknown session key in protected region

我要求他们在加密这些文件时包含modelsim的加密密钥,但他们不知道如何使用。

我理解他们使用.tcl的粗略工作流程是:

synth_design -top Formatter
write_edif -force ./Formatteredf

所以我的问题是,当他们用Vivado生成EDIF文件时,他们如何包含modelsim加密密钥?

2 个答案:

答案 0 :(得分:0)

Modelsim无法模拟EDIF。您需要将EDIF转换为可以模拟的格式。你提到Vivado,所以你可以使用write_verilogwrite_vhdl转换它们。

我无法访问任何加密的第三方网表,但我确实使用了一些加密的Xilinx IP(特别是ila_v6)。合成后,我打开了合成的结果,并做了以下几点:

write_vhdl -mode funcsim -cell test_ila/U0 ila_funcsim.vhd

现在,test_ila是我在顶层创建的实例,U0是内部的加密实例。生成的VHDL只是UNISIM原语的网表。它很高兴在Modelsim下编译。网表中没有加密的IP。

所以,我认为你有类似的东西:

component encrypted_ip is
...
end component encrypted_ip;

然后添加加密的EDIF,它被视为黑盒子,但最终被拉入综合/实现。因此,打开合成或实现的设计,并使用write_vhdl将组件转储到网表。

答案 1 :(得分:0)

如果EDIF是加密的,write_vhdl几乎肯定会产生另一个加密的网表。 VHDL网表可能会在Modelsim中进行模拟,但我猜不会。

Modelsim附带了一个工具" vhencrypt.exe"它将使用IEEE 1735加密源。生成的文件可以由Modelsim模拟,但您必须从源而不是EDIF开始。你现在会遇到在Vivado中使用EDIF和在Modelsim中使用vhencrypt输出的问题,但它是朝着正确方向迈出的一步。

IEEE 1735可以生成Vivado和Modelsim都可以使用的单个输出,但您需要提供Xilinx的公钥。据我所知,Xilinx并未公布1735年的公钥,但他们可能会与IP合作伙伴共享。