是否可以在加密模块内的未加密模块实例中访问信号?

时间:2017-07-20 03:22:13

标签: verilog system-verilog

加密的DUT RTL实例化非加密模块的几个实例。 我完全可以看到未加密的模块。

在testbench中,我想监视未加密模块中的特定信号并进行运行时检查。它应该是这样的:

// in top level tb
assign wire_a = encrypted_DUT.<...>.non_encrypted_inst.wire_a; // but we don't know exact path
// ... and then do some check on wire_a

上述行不可能,因为我从来不知道确切的路径。

还有其他方法吗?或者它可能吗?

2 个答案:

答案 0 :(得分:1)

这是不可能的。了解未加密的低级模块是一个安全漏洞。想象一下由未加密的库单元组成的简单加密网表。如果您可以看到所有单元格的路径,则可以轻松推断出网表。

加密DUT的提供者必须打开他们愿意允许访问的实例的RTL。

答案 1 :(得分:1)

如果加密较弱,将$display("%m")放在未加密的子模块中将显示模拟中的路径。

如果这不起作用,则有一种解决方法。您可以将子模块分配给顶级信号,而不是将顶层探测器放入子模块中。

// un-encrypted sub-module
assign $root.top_tb.wire_a = wire_a; //Note: $root is SysteVerilog only
//assign top_tb.wire_a = wire_a; //Universal but follows 'upwards name referencing'

IEEE1364-2001(Verilog)§12.5向上名称引用
IEEE1800-2012(SysteVerilog)§23.8向上名称引用