微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 关于DDR一问

关于DDR一问

时间:12-12 整理:3721RD 点击:
1. DDR是否需要专门的工艺库去实现?因为寄存器是即可以上升沿也可以是下降沿触发的。
2. 如果是的话,在代码中怎么写?
always@(posedge clk or negedge clk)???
还是
always@(posedge clk or negedge rst_n)
always@(negedge clk or negedge rst_n)
3. 一般工艺库,一般情况下,是否允许既有上升沿又有下降沿设计的存在?
即:
always@(posedge clk or negedge rst_n)
always@(negedge clk or negedge rst_n)
谢谢!

always@(posedge clk or negedge rst_n)
always@(negedge clk or negedge rst_n)

一般always@(negedge clk or negedge rst_n)
会变成: always@(posedge clk_t or negedge rst_n)
assign clk_t = dft_on ? dft_clk : !clk;

现在不需要这样了,因为新的DFT工具支持mix edge的scan chain。
以前确实都是这样要求的。

需要专门的工艺库支持吗?
普通工艺库这么写,会有什么问题吗?

你的意思不会是这样吧
reg rout;
always@(posedge clk)
    rout <= d1;
always@(negedge clk)
    rout <= d2;
这是综合不了的。

我的意思不是这样的,这个肯定综合不了
我想问的是,如果普通工艺库中既使用上升沿,又使用下降沿(并不是驱动同一个信号),设计中会有什么影响吗?
@xjj

always@(posedge clk or negedge rst_n)
  data_low[7:0] <= data_in[7:0];
always@(negedge clk or negedge rst_n)
  data_high[7:0] <= data_in[7:0];
assign data_out[15:0] = {data_high,data_low};

1 跟std cell lib没有关系
2 这种双沿设计时序不好保证,我被老大问到过,觉得需要一个2倍时钟,来实现时钟信号相位差180

不能忍了!a家现在沦落至此了吗?!
如果是接受的话,
定义一组寄存器,用上沿采上沿有效的数据;再定义另外一组用下沿采下沿有限的数据。最后再定义一组用上沿合并前两组数据。工具会自动认上下沿,增加约束。
如果是发送的话,
请调用专门的单元

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

网站地图

Top