2008年11月11日星期二

using the same coding style(both RTL or both handcode) to get generated clock to avoid RTL simulation errors

有两个generated clock: clk1和clk2.它们都是从source clock(clk_src)分频得来的。在STA的constrain中,clk1和clk2是sync的,因此CTS后,可以保证clk1和clk2是sync的。

clk1是用RTL写的:
always @ (posedge clk_src or negedge rst_)
if (!rst_)
clk1 <= 1'b0;

else
clk1 <= clk1_d;

clk2是用handcode写的:
DFCNQHVTD1 DNTCLK2 (.Q(clk2), .D(clk2_d), .CP(clk_src), .CDN(rst_));
DFCNQHVTD1是technology library里面的cell.

这两段代码在功能上是相同的。在RTL仿真中,如果DFCNQHVTD1不含delay,则clk1和clk2的相位也是相同的,即边沿对齐。但是,若在RTL仿真中,DFCNQHVTD1含有delay(CP-->Q有延时),clk1和clk2就会错开一些。这可能会导致RTL simulation出错。

所以,最好全用RTL或全用handcode来产生generated clock,以避免上述的问题。

没有评论: