我在verilog中有两个相同的(通过仿真)触发器过程。
首先只是带有异步复位(CLR)和时钟(SET)的寄存器的标准描述,数据绑定到1:
always @(posedge SET, posedge CLR)
if (CLR)
Q <= 0;
else
Q <= 1;
第二个与上述相同,但第二个条件是设置信号:
always @(posedge SET, posedge CLR)
if (CLR)
Q <= 0;
else if (SET)
Q <= 1;
这两种触发器在仿真中的实现之间没有区别。但是,verilog标准对这种情况有何说明?综合测试后,这些测试是否应该与它们的网表相同?
答案 0 :(得分:0)
第二个示例中的“ if(SET)”是多余的,将在综合中进行优化。由于always块将仅在SET或CLR的姿势上输入,因此else语句暗示发生了SET的姿势。
顺便说一句,第一个示例是用于编写触发器的更受接受的版本。我还没有看到第二个版本将其用于运输设计。