微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 门控时钟为不定值

门控时钟为不定值

时间:10-02 整理:3721RD 点击:
大神么,大家好,我用了一个门控时钟控制两个FIFO,可是综合后仿真的时候clk_1和clk_2总是为不定值。即使en_1为1,clk有效的时候,clk_1仍然为不定值,我是用verilog描述的,不是用ICG插入的门控时钟,弄了两天了,很着急,希望大家能给个意见。

上面是我的截图,大家给我解决一下哈

在前端板块你也在问这个问题,看到你的代码基本明白了。
en_clk_1和en_clk_2不要用latch,
always @ (posedge clk or negedge rst_n)
begin
if (!rst_n)
en_clk_2 <= #DLY 1'b0 ;
else if (A)
en_clk_2 <= #DLY 1'b1 ;
else if (B)
en_clk_2 <= #DLY 1'b0 ;
end
always @ (*)
begin
if (!clk)
en_clk2 <= en_clk_2
end

真的非常感谢你,为什么不用latch呢?这跟不定值有关系么?

刚刚试了试,代码改为现在这样了,可是还是为不定值,我吧仿真图放上来了,你有空的时候帮我看看好么?



回复 4# 杰克淡定
这是那个时钟最开始的时候的波形,上面还有一个波形,这个的主要的问题是即使发现en_1复位信号拉高时为1时,即使en_1信号为高电平,clk_1也还是红色的状态,很奇怪。

用latch时序分析会直接晕菜,除开clock gating,所有的数字逻辑要避免产生latch。从给的波形无法分析问题,你用FIFO的读写使能去门控时钟其实没有完全必要,你就让时钟常在,FIFO只有在读写使能有效的时候才会去动作

我的本意是降低功耗,可是不加门控时钟的话,只控制使能不是还有时钟负载这样的功耗么,这样我的功耗达不到要求啊。



你多虑了,综合时使用-gate_clock这个参数,DC工具会自动把符合条件的DFF的clock生成带门控的时钟,不需要在设计里纠结每个小模块的gating问题。RTL里需要通过gating来考虑功耗的,一般只针对整个IP,比如在不需要这个IP工作时,把整个IP的clock采用门控gating掉。

也就是说我用两个FIFO,当一个FIFO不用的时候我将它关掉,可能跟没关掉前的功耗一样喽?好惨

没错,功耗差别微乎其微,因为没有工作的FIFO,由于读写使能都为0,相应DFF的clock都是gating住的,所以小编不要在很小的模块级别去考虑时钟gating带来的功耗节省,这不是重点。
比如FIFO的写入:
always @ (posedge clk)
begin
if (wr_en)
fifo_buffer[addr] <= #DLY data_in ;
end
像这种不带else逻辑的DFF,综合出来的结果就是用wr_en去门控产生DFF的CK端,data_in直接连到DFF的data端。如果你的FIFO此时没有工作,wr_en为0,时钟自然就是被gating住的

但是FIFO还有读指针计数,写指针计数,还有usedw计数,这些应该也有功耗吧。

你的指针不是一样只在读写使能有效时才加减么?指针DFF的CK一样会被读写使能门控。你RTL设计都考虑到DFF级别的时钟门控了,太过了。使用always描述的DFF,只要有if没有else的条件,就可以综合成带CK gating的DFF,用不着人为设计每个DFF的clock gating

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

网站地图

Top