2017-07-20 13 views
2

加密的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 

上述行是不可能的,因爲我永遠不知道確切的路徑。

還有別的辦法嗎?或者可能呢?

+0

另一件事是嘗試爲'bind'您檢查模塊插入非加密模塊。 – toolic

回答

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 向上名引用

+0

'$ display(「%m」)'不會顯示路徑,但向上引用按預期工作。我從來不知道有這樣的事情。很高興知道。謝謝 – AldoT

1

這是不可能的。對未加密的低級模塊具有可見性是一個安全漏洞。想象一下,由未加密的庫單元組成的簡單加密網表。如果您可以看到所有單元格的路徑,則可以輕鬆推斷出網表。

加密DUT的提供者將不得不打開RTL到他們願意允許訪問的實例。

+0

嘿戴夫,我認爲加密的模塊,提供了端口連接的可見性。不是邏輯,而只是端口。我對嗎? –

相關問題