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

Is it possible to access signal in unencrypted module instance inside an encrypted module?

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

在测试台中,我想监控非加密模块中的特定信号并进行 运行-时间检查。它应该是这样的:

// 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

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

还有别的办法吗?或者有可能吗?

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

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

如果加密较弱,将$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 向上引用名称