UPF和rtl中悬浮信号在综合时处理
(2011-07-04 13:34:53)
标签:
杂谈 |
在power
gating中(或者别的特殊情况下),在综合的时候,需要保留一些悬空(dangling)信号。比如需要在UPF中指定power
switch的ack信号,在很多时候,这些信号在rtl中都是没有driver的,这样在rtl读入的时候,DC经常会把这些信号优化掉,使得根据rtl代码指定的ack
port所需要的net在读入后消失。
// dummy signal for switch control
reg
PwrOnWifiAck;
reg
PwrOnCpuAck;
wire
PwrOnWifiAck_sw;
wire
PwrOnCpuAck_sw;
//synopsys keep_signal_name
"PwrOnWifiAck_sw"
//synopsys keep_signal_name
"PwrOnCpuAck_sw"
always @ (posedge HCLK or negedge
SYSRESETn) begin
if (!SYSRESETn)
begin
PwrOnWifiAck <= 1'b0;
PwrOnCpuAck <= 1'b0;
end
else begin
PwrOnWifiAck <= PwrOnWifiAck_sw;
PwrOnCpuAck <=
PwrOnCpuAck_sw;
end
end
这时可使用keep_signal_name这个primitive。
如下面例子中,PwrOnWifiAck_sw和PwrOnCpuAck_sw在综合的时候都是没有driver的wire,实际上需要在后端设计中接到power
switch的ack端。通常情况下这两个net会被删除。
而上面代码中,加入了primitive: //synopsys keep_signal_name
"xxx"。并且在读入rtl之前,设置DC变量:
set hdlin_keep_signal_name "user"
这样,上面例子中的两个net: PwrOnWifiAck_sw和PwrOnCpuAck_sw,不会在analyze和elaborate被删除,从而可以在UPF中直接引用。