2011年12月29日 星期四

[Verilog] Latch 和 正反器(D-FF)的差異

定義:
latch是閂鎖器,D-FF是正反器
閂鎖器是會保留之前的狀態,而D-FF則是每個輸入有其對應的狀態

Verilog 寫法
latch的產生往往來自於組合邏輯沒寫好
ex1:
always@ (*)
   if(enable)
         q=D;
一般而言,不會刻意想產生latch,因為latch會有產生在輸出q,是不確定的值,即使想要閂鎖某些值,也會用下列方式
ex2:
always@(posedge clk)
    if(enable)
         q=D;
這會使用D-FF但是有CE(chip enable),當enable=1, q=D, else q=D;

D-FF的產生,是要使用暫存器,暫存某些值
always@(posedge clk)
       q<=D;
這樣的寫法,產生的D-FF沒有CE

2011年12月28日 星期三

[Verilog] setup time, hold time

根據玩轉FPGA一書, 真OO無雙網誌所說
setup time: 在clock rising  之必須穩定的時間,若無,則無法進入暫存器。
hold time: 在clock rising  之必須穩定的時間,若無,則無法進入暫存器。

2011年10月17日 星期一

Not gate注意事項

module top(
input a,
input b,
output [31:0] c
    );
wire a_wire;
assign a_wire=0;
assign c=!a_wire;


endmodule
結果造成只有c最後一位元改變0x0000->0x0001

另一種寫法

module top(
input a,
input b,
output [31:0] c
    );
wire a_wire;
assign a_wire=0;
assign c=~a_wire;


endmodule

則c=1111.....1111;

結論
       使用 ! 是一位元的反向,使用~則是全部位元的反向。一般使用使用pll/dcm 中的lock作為其他module採用~比較正統。!屬於邏輯位元子,用來判斷是或否,ex: if(a==!b)之類。

2011年10月2日 星期日

[Cadence SocEncounter] 打不開

可能是chip.vg寫錯所引起。
指的是 top top(.clk(clk), ....

[Synopsys Desgin Vision] wire load是甚麼?

指的是trace的Resistor 和Capacitor。
如tsmcw10(一般用這個)指的是R:1 C:1
而tsmcw50 表示R:5 C:5

[Synopsys Desgin Vision]使用有memory 的設計

1. 合成時不要加入像sram.v等相關memory verilog file, ex: ref_sram, cur_sram(董茂揚 code)
2. link library加入cur_sram.db 和ref_sram.db等file

[Cadence Virtuso] output (scope) 跑不出正確圖形

如果DRC. LVS都正常,可能是contact點有問題

[Cadence Virtuso] Schematic產生顏色

1. 一開始 new->library要source xxx.tf
2.設置display.drf
3.Export->CDL預設放置於目標資料夾下

[Cadence Virtuso] 加入Calibre選項

1. 將TSMC18資料夾放於目標資料夾中
2. 在Home(user) or root下,放.cdsinit
3. 接著,必須source /usr/cad/mentor/CIC/calibre.cshrc

NoC注意事項

1. switch中119行
else if (h[3]==1])
2. FIFO reset為0的條件加入