10.1状态图编辑器-阻塞/非阻塞语句在Verilog状态机代码中不被最佳使用-Xilinx-AMD社区-FPGA CPLD-ChipDebug

10.1状态图编辑器-阻塞/非阻塞语句在Verilog状态机代码中不被最佳使用

描述

由StuteCAD生成的Verilog状态机代码可能不是最优的。

下面是StuteCad的非最佳代码输出示例:

总是@(POSEDGE CLK)

开始

CNT1=NExtEXCNT1;

结束

总是@(POSEDGE CLK)

开始

CNT0=NEXTXCNT0;

结束

这样做是指派

CNT1= NEXTEXCNT1

CNT0= NEXTEXCNT0

在每个时钟边沿上,但是如果使用非阻塞语句,则只需要:

总是@(POSEDGE CLK)

开始

CNT1和lt=NExtEXCNT1;

CNT0&LT=NExtEXCNT0;

结束

解决方案

虽然代码不是最优的,但它在功能上是正确的,不应该导致实际器件中的性能问题。由于修复STATECAD代码生成器的这一部分所涉及的困难和风险,因此决定将该功能保留原样。

用户应该知道,这可能导致行为仿真中的竞争条件。当使用多个进程来代替一个进程时,仿真器必须决定先处理哪个进程。如果分配的值依赖于另一个进程中的另一个赋值值,则可以根据处理过程的顺序获得不同的仿真结果。

请登录后发表评论

    没有回复内容