2011年9月17日 星期六

PrimeTime再了解(十七)

Specify ideal network

Design rule checks(DRCs) are disabled on clock networks (ideal
network) .

The latency and transition times of ideal clock are zero by default.









For synthesis(DC):
set_dont_touch_network  [all clocks]

For Layout tools
set_ideal_network [get_port “CLKA” ]
set_ideal_network [get_pin  “PLL/CKOUT”]
set_ideal_network [get_pin  “U3/Q”]




此處可參考
http://kirenenko-tw.blogspot.com/2011/08/design-compiler_5614.html

OpenRisc_CPU全定制芯片设计方法

參考
http://www.shangshuwu.cn/index.php/OpenRisc_CPU%E5%85%A8%E5%AE%9A%E5%88%B6%E8%8A%AF%E7%89%87%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%B3%95

下次研究openrisc時有可參考的資料

2011年9月16日 星期五

PrimeTime再了解(十六)

Methodology to deal with indefinite constraint value for all clocks



Design Compiler再了解(四十八)

最佳性能的最优化

資料由http://www.61ic.com/code/ 得來

方法二 優化高负载的线


高负载的线常常产生临界路径。你可以用两种方法来减少线上的负载:

1.        如果这个高负载位于一个模块内,而这个模块不包含层次,用命令
balance_buffer修理高负载线。如下,输入:
dc_shell> include constraints.con
dc_shell> compile
dc_shell> balance_buffer -from find(pin, buf1/Z)
    当你的库使用线性延迟模型时,balance_buffer命令提供了最好的结果。如果你的库使用非线性延迟模型,那么第二种方法将提供一个更好的结果。


2.   如果这个高负载穿越几个模块之间的层次,那用设计规则来修复这个问
题,输入:
dc_shell> include constraints.con
dc_shell> compile
dc_shell> set_max_capacitance 3.0
dc_shell> compile -only_design_rule
這個主要在添加Buffer和调整Cell大小,通常可以改善
hold time(min time) violation

另外hold timg也可以用
set_fix_hold [all_clocks] 修正hold time

 
    一个很少见的情况是层次化的结构使Design Compiler失去修复设计规则的能力。
    在图所示的简单事例中,O1负荷过多。为减少负荷,通过group命令或改变HDL使尽可能多的负荷在一个层次上组合。然后再利用其中一个策略。
 

2011年9月15日 星期四

Design Compiler再了解(四十七)

最佳性能的最优化

資料由http://www.61ic.com/code/ 得來

方法一 创建路径组 (group_path的使用)


默认时,Design Compiler根据控制终点的时钟组合路径(所有与时钟没有
关系的路径在一个默认的组中)。如果你的设计中有复杂的时钟、复杂的时序要求、或复杂的约束,你可以创建路径组,使得Design Compiler专注于设计中指定的关键路径。
    用命令group_path来创建路径组。命令group_path允许你:
1 控制设计的最优化
2.最优化接近临界的路径
3.  最优化所有路径

1)控制设计最优化
    你可以通过创建路径组和对其排序来控制最优化,这只影响最大延迟成本函数。默认情况下,Design Compiler只对每个组中的最差情况起作用。
    通过对每个组设置权(默认权是1.0),设置路径组的优先权。权可以是从0.0100.0





    比如,图显示了一个有多重路径到触发器FF1的设计:

    为指出从输入in3FF1的路径的优先权最高,采用下列命令:
dc_shell> group_path -name group3 \-from in3 -to FF1/D -weight 2.5


2)最优化接近临界的路径
    当你对一个路径组增加了临界范围,你改变了最大延迟成本函数。Design Compiler在临界范围内优化所有路径。
    指定一个临界范围会增加运行时间。为限制运行时间的增加,只在设计的最后实现阶段使用临界范围,并使用一个合理的临界范围值。一个最大临界范围值的方针就是时钟周期的10%。
    使用下列方法之一指定临界范围:
使用group_path命令的-critical_range选项
使用set_critical_range命令



   如下,图显示了一个带有三个输出ABC的设计:

    假设时钟周期为20ns,每一个输出的最大延迟为10ns,临界延迟如图所示。默认时,Design Compiler只优化最差情况(到输出A的路径)。为优化所有路径,设置临界延迟为3.0ns
dc_shell> create_clock -period 20 clk
dc_shell> set_critical_range 3.0 current_design
dc_shell> set_max_delay 10 {A B C}
dc_shell> group_path -name group1 -to {A B C}


你也可以用set_max_delayset_min_delay命令来约束穿越不同频率域的异步路径。
    比如:
dc_shell>set_max_delay 17.1 \-from find(clock, clk1) -to find(clock, clk2)
dc_shell> set_max_delay 23.5 \-from find(clock, clk2) -to find(clock, clk3)
dc_shell> set_max_delay 31.6 \-from find(clock, clk3) -to find(clock, clk1)


3)优化所有路径
    通过对设计的每一个终点创建一个路径组来对所有路径进行优化,但导致了更长的编译运行时间。利用下列脚本创建一个路径组:
endpoints = all_outputs() + all_registers(-data_pins)
foreach (endpt, endpoints) {
group_path -name endpt -to endpt
}

PrimeTime再了解(十五)

Clock Tree Balance

*** CTS ***
The priority of clock tree balance:
1. CTS for C and Fix
2. CTS for A
3. CTS for B





*** CTS ***
The priority of clock tree balance:
1. CTS for U3/Q
2. CTS for A








2011年9月14日 星期三

和電腦下圍棋 on Windows

參考 http://yu-web.net/blog/?p=40

GNU Go是Free Software Foundation 出的自由軟體,
棋力約8到12級。
很多網路圍棋如果你要和電腦的對手下的時候,這個電腦對手其實也是GNU Go
Linux上裝程式就很好裝,所以不用寫了
Windows就是個麻煩的系統,所以還是紀錄一下要怎麼在自己的電腦上面安裝
其實只要去官網下載回來就可以玩了
http://www.gnu.org/software/gnugo/gnugo.html
不過它可是命令列的,所以都是文字介面的畫面,比較不美觀
要美觀的話可以去抓圖形化的前端程式
可以使用GoGui
http://gogui.sourceforge.net/
一樣把它抓回來,然後解壓縮,他是java程式
所以你要安裝java執行環境
再來把剛剛抓的gnugo所有的內容丟到gogui的lib資料夾裡面,這樣Gogui才會有電腦對手
然後執行資料夾lib裡面的gogui.jar就可以了
進入遊戲後還沒有電腦對手可以對奕
先執行Program選單的New Program,然後在Command的空格裡輸入
gnugo --mode gtp
按下OK
這時就有電腦對手了,可以直接下棋了

 不過 gnu go的棋力太差
建議用feugo
到 http://fuego.sourceforge.net/  下載安裝


上段的電腦圍棋!!! 

2009 Computer Olympiad的排名,MoGo掉到第3名了

1位 Zen
2位 Fuego  -windows下可用
3位 MoGo 

可參考

http://linuxnote.blogspot.com/2010/03/blog-post.html


另外要讓 feugo開棋時有一些定石可用
請參考

http://linuxnote.blogspot.com/2010/05/fuego.html


PrimeTime再了解(十四)

Create clock tree architecture


Consideration of clock tree balance priority

Dose clock tree exist overlap?

Clock tree architecture
•   Create_clock or Create_generated_clock ?
•   Exist  Multiplexer、 Divider cell or  asynchronous circuit with clock domain?
•   Clock Period
•   Flip-Flop number

Specify Sync pin or Ignore pin

2011年9月13日 星期二

DFT再了解(二十八)

網路上找到關於 autofix 的例子可供參考

DFT之autofix(一)


http://bb2hh.blogbus.com/logs/59523721.html



DFT之autofix(二)

http://bb2hh.blogbus.com/logs/59523820.html

PrimeTime再了解(十三)

generated_clocks





create_clock -name CLK1 -period 5 [get_ports CLK1]
create_clock -name CLK2 -period 10 [get_ports CLK2]
create_generated_clock -name GCLK1 -divide_by 2 -master_clock \
[get_clocks CLK1] [get_pins U3/Q] -source [get_ports CLK1] -add
create_generated_clock -name GCLK2 -divide_by 2 -master_clock \
[get_clocks CLK2] [get_pins U3/Q] -source [get_ports CLK2] -add
set_case_analysis 0 SCAN_MODE



2011年9月12日 星期一

劍橋大學

有不少CPU的資料

http://www.cl.cam.ac.uk/teaching/

PrimeTime再了解(十二)

Summary of Violations Check

















O: violation number     X: Don’t care      Non: No report   
< 1ns :  Violations slack less than 1ns value
Violated : timing violation paths 
Untested : Non-constraint paths