design

Case Study: Clock Divider with Synchronous Reset

When using a counter to divide a clock, don’t reset the counter, especially when you are using synchronous reset. It will make the clock quiet while reset. And if it’s used along with sync reset, then those flip-flop won’t be reset at all. But if without reset, the counter will be “X” in simulation. logic [1:0] cntr; `ifndef SYNTHESIS initial begin cntr = 2'b00; end `endif always_ff @ (posedge clk) begin cntr <= cntr + 1; end

Register-based SRAM Read Circuit RTL Example using "generate"

Some parameterized example RTL code for register-based SRAM read circuit using “generate” feature parameter d = 32; // FIFO depth parameter w = 64; // FIFO data bit-width logic [w-1:0] mem [d-1:0]; // FIFO memory array logic [d-1:0] rwl; // 1-hot read word line // read circuit using "generate" wire [w-1:0] word_or; genvar width, depth; generate for (width = 0; width < w; width++) begin: rbit wire [d-1:0] bit_or; for (depth = 0; depth < d; depth++) begin: rmux assign bit_or[depth] = mem[depth][width] & rwl[depth]; end assign word_or[width] = |bit_or; end endgenerate reg [w-1:0] idout; always @ (negedge CKB) begin idout <= word_or; end

Survey of Low Power Design

从2017年初的观点来看,这篇报告的部分内容过时了,但是整体结构还是比较适合的。希望今年有时间能够出一版更新的版本。

低功耗设计的最根本驱动力是集成电路芯片的功耗随着工艺的进步不仅没有下降反而不断上涨。因为晶体管速度和集成度的上升速度超过了电路单次翻转所消耗能量的下降速度,所以单位面积芯片的功耗在迅速上升。而根据ITRS的预测,固定电源供电设备和移动设备中芯片的功耗发展趋势如图表 1所示。从中我们不难看出,各类芯片的各种功耗都在不断飞速上升,已经成为芯片设计者不容小觑的问题。