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

关于门控时钟设计问题

时间:10-02 整理:3721RD 点击:
synopsys的power compiler可以自动综合生成门控时钟,那在设计RTL级代码的时候需不需要对门控时钟进行以下说明呢?
assign clk_gate=(en)?clk:0;
我感觉在RTL级代码应该要添加上面这样的代码吧,不然综合的时候没法认识哪个模块需要添加门控时钟以及门控时钟时能信号是什么。
不知道是不是这样呢?

插入门控代码一般这样写:
always@(posedge clk or negedge rst_n)
begin
if(!rst_n) D_out <= 1'b0;
else if(EN) D_out <= D_in;
end
在dc中设置门控类型命令就可以插入门控时钟结构了

always@(posedge clk or negedge rst_n)
begin
if(!rst_n) D_out <= 1'b0;
else if(EN) D_out <= D_in;
end这样写的话由于最后一个if语句后面没有else,是不是在综合的时候会自动生成一个无意识的latch呢?是不是应该改成以下:
always@(posedge clk or negedge rst_n)
begin
if((!rst_n)|(!EN)) D_out <= 1'b0;
else if(EN) D_out <= D_in;
end

always@(posedge clk or negedge rst_n)
begin
if(!rst_n) D_out <= 1'b0;
else if(EN) D_out <= D_in;
end如果是这样写RTL级代码的话,最后一个if没有else,会产生无意识latch,是不是改成下面这样要好些呢?
always@(posedge clk or negedge rst_n)
begin
if((!rst_n)|(!EN)) D_out <= 1'b0;
else if(EN) D_out <= D_in;
end
如果是这样的话,DC在综合的时候也会自动识别并将其综合为一个门控时钟吗?(因为现在EN端口控制两个MUX了)

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

网站地图

Top