Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog 在RTL仿真中将生成的时钟定义为同步_System Verilog - Fatal编程技术网

System verilog 在RTL仿真中将生成的时钟定义为同步

System verilog 在RTL仿真中将生成的时钟定义为同步,system-verilog,System Verilog,我正在生成一个分割时钟,类似这样: logic div_clk; always_ff @(posedge clk or negedge rstb) begin if(!rstb) div_clk <= 1'b0; else div_clk <= !div_clk; end always_ff @(posedge clk) begin clk_data <= something; end always_ff @(posedge div_clk) begi

我正在生成一个分割时钟,类似这样:

logic div_clk;
always_ff @(posedge clk or negedge rstb) begin 
   if(!rstb) div_clk <= 1'b0;
   else div_clk <= !div_clk;
end
always_ff @(posedge clk) begin 
   clk_data <= something;
end

always_ff @(posedge div_clk) begin 
   div_clk_data <= clk_data;
end
在我的模拟中,我得到了一个竞争条件,因为
clk\u data
更新与
div\u clk
一致,并且
div\u clk\u data
得到了错误的值

在合成中,我通过创建生成的时钟将这两个时钟定义为同步:

create_clock -name CLK [get_ports clk]
create_generated_clock -name GEN_DIV_CLK -source [get_ports clk] -divide_by 2 [get_pins div_clk]

我是否可以在我的RTL中加入一些等效的东西,或者我可以做些什么来告诉我的模拟器
div_clk
clk
是同步的,并防止竞争条件发生

在这种情况下,不应使用NBA。如果希望时钟保持同步,则时钟树(包括门控时钟)中不应包含任何NBA

在这种情况下,不应使用NBA。如果希望时钟保持同步,则时钟树(包括门控时钟)中不应包含任何NBA