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