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

Verilog 是否可以访问加密模块内未加密模块实例中的信号?,verilog,system-verilog,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 //在

加密的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
//在顶级tb中
分配导线\u a=加密的\u DUT..非加密的\u inst.wire\u 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向上名称引用

(SysteVerilog)§23.8向上名称引用

嘿,Dave,我认为加密模块提供了端口连接的可视性。不是逻辑,而是端口。我说得对吗?
$display(“%m”)
不会显示路径,但向上引用会按预期工作。我从来不知道有这样的事。很高兴知道这一点。谢谢