微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > #1有什么用

#1有什么用

时间:10-02 整理:3721RD 点击:
Verilog中的#1有什么用 常常能看到这样的赋值
always@(posedge clk)begin
         if(!rst_n)
            a<=#1 1'b0;
        else if(conditon1)
                a<=#1 1'b1;
        else if(conditon2)
                a <=#1 1'b0;
end
其中这个#1 具体意义是什么,除了仿真时的意义,是否是可以综合的。在FPGA或者ASIC中,是否需要这样写,意义大吗?有好处吗?

仿真时候用的,#1不可综合

个人习惯而已
可以不加延时

1楼正解,在仿真的时候用来查看哪条路径比较长,这样写完设计之后就能在不综合之前大致了解每条路径的延迟情况



    不是特别理解
也即是综合之前都要把 #1 去掉的啦?
另外了解那条路径延时长怎么理解?都是寄存器啊,综合布线路径长短的影响一般不是在组合逻辑上啊。



    也觉得困惑。知道是用来仿真的。但是怎么实现你说的查看哪条路径的长短呢?谢谢指教!


这个#1一般应该是给仿真工具用的,仿真工具里面有一个最小单位时间deta。一般来当CLOCK的上升沿到来的时候刚好采到前一个周期的数据(因为有实际器件有延时嘛), 但如果不加#1, 有时仿真工具就会搞错,会采到当前周期这个数据(看上去就像组合逻辑一样),当然这样的机率比较小,但试想一个大工程如果遇到了这个问题找起来还是很花时间的。



    #1,其实是为了看波形的时候让信号的翻转和时钟的边沿隔开,便于debug。
   综合的时候,会忽略掉的。


综合时候是被自动忽略的,如果还有#2 #3出现,就是在写RTL时为了估测后端的情况凭经验加上的时间延迟。但如果都是#1,就如楼下所说,是为了debug时数据改变时刻与clock边沿错开,比较容易观察。

代表延时信息



1:可以做到么?
2:就算可以做到,有意义么?

仿真的时候便于看波形,综合的时候应该可以自动忽略掉

我还是觉得不做延时,看波形比较方便一点。做延时的话,波形里面的毛刺太多,看着太乱。


毛刺?时序逻辑前仿会有毛刺?

#1 is just for simulator to simulate delay 1 unit time.
it's easy for designer to make sure the latching data.
logic synthesizer will ignore #1 syntax.
the real latency is depend on path delay.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top