它用vcs工作的方式是調用一個導出函數,該函數將輪流調用$ stack。在這個例子中,它適用於'默認'和'純'綁定。
import "DPI-C" context function void testStack();
export "DPI-C" function printStack;
function void printStack;
$display("====%m=====");
$stack;
endfunction
module dpis;
sub sub();
endmodule // dpis
module sub;
initial
testStack();
endmodule // sub
class Test;
function void test;
testStack();
endfunction // test
endclass // Abc
program abc;
Test a = new;
initial
a.test();
endprogram // abc
和 'c':
#include <svdpi.h>
extern void pringStack();
void testStack() {
svScope scope;
scope = svGetScopeFromName("$unit");
svSetScope(scope);
printStack();
}
,結果是這樣的:
====$unit::printStack=====
#0 in printStack at dpis.sv:9
#1 in DPI function
#2 in dpis.sub
====$unit::printStack=====
#0 in printStack at dpis.sv:9
#1 in DPI function
#2 in <protected code>
#3 in abc at dpis.sv:30
#4 in abc
因此,它提供了有關位置,無論是作爲一個模塊實例路徑或一些信息一個文件/亞麻布。
我想嘗試一些放在這裏的想法。將更新爲什麼 – user3662733