Для привязки к работе все, что вам нужно, это инкапсулировать это утверждение в модуле
module my_module;
assert property (@(posedge (mod_clk & clk_gen_enable)) ##delay (clk_sync == 1));
endmodule
Использование конструкции bind
для вставки my_module
в целевой модуль. Правила поиска Verilog будут искать вверх, чтобы найти ваши имена сигналов.
bind my_target_module my_module my_instance_name();
##delay
работает на фронте тактовой частоты, который вы указали перед ним, который у вас есть как mod_clk & clk_gen_enable
. Я предполагаю, что вы действительно хотите иметь значение clk_gen_enable
.
property sync;
int counter;
@(posedge mod_clk) (clk_gen_enable, counter=delay)
|-> @(posedge st_clk) (1,counter--)[*0:$] ##1 counter<0 ##0 (clk_sync == 1));
endproperty