- 愚昧無知是一切痛苦之源。(8月23日名言)
- 受苦的人,沒有悲觀的權利。一個受苦的人,如果悲觀了,就沒有了面對現實的勇氣,沒有了與苦難抗爭的力量,結果是他將受到更大的苦。
- 祇有經歷過地獄磨難的人,才有建造天堂的力量。
- 一段不幸的婚姻不是缺乏愛,而是缺乏友誼。
- 沒有事實,祇有詮釋。
- 常常談論自己的人,往往祇是為了隱藏自己。(《善惡的彼岸》-169)
- 完全不談自己是一種甚為高貴的虛偽。(《人性,太人性的》)
- 當心!他一沉思,就立即準備好了一個謊言。(一譯「他自省:他隨時準備要說謊。」)(《歡悅的智慧》-157)
- 那不能殺死我的,使我更堅強。Was mich nicht umbringt, macht mich stärker.(4月1日名言)(《偶像的黃昏》)
- 一個人知道自己為什麼而活,就可以忍受任何一種生活。
- 道德有兩種:有獨立心而勇敢者曰貴族道德;謙遜而服從者曰奴隸道德。
- 道德使人愚昧。
- 高貴的靈魂,是自己尊敬自己。
- 生活是一面鏡子,我們努力追求的第一件事,就是從中辨認出自己。
- 最危險的健忘-剛開始他們忘記去愛別人,最後在他身上再也找不到值得去愛的地方了。(《曙光》-401)
- 頑固不化比謊言更是真理的敵人。
- 要破壞一件事,最刁鑽的辦法是:故意用歪理為這事辯護。
- 「你要到女人那裡去嗎?別忘記帶上鞭子。」(《查拉圖斯特拉如是說》由年老的婦人所說,並不是尼采所說,老女人對年輕女人是常常心存嫉妒,同性相斥的)
- 所有
的殘忍都源於軟弱 - 善良的天性比機智更令人愉快-約瑟夫阿迪生
- 一九二八年,英國經濟學家凱因斯(JohnMaynardKeynes)說︰「自創世紀以來,人類將首度面對一個真正、永恆的問題--如何利用工作以外的自由與閒暇,過著喜悅、智慧與美好的生活。」這位經濟大師預測,金錢問題將會消失,代之而起的是這項挑戰︰如何睿智的善用新發現的閒暇,追求美好生活。
2015年10月27日 星期二
格言
2015年10月12日 星期一
deliver linux variable to TCL
C shell script:
### c2tcl.csh ###
#!/bin/csh -f
set names = "0 1"
foreach name ($names)
echo $name
echo
setenv abc $name
liberate t.tcl | tee t.log
mv t.log t_$name.log
end
set_var write_verilog_without_err_primitives $env(abc)
puts "$env(abc)"
printvars
執行:
source c2tcl.csh
source $::env(golden_area)/common_settings/common_settings.tcl
### c2tcl.csh ###
#!/bin/csh -f
set names = "0 1"
foreach name ($names)
echo $name
echo
setenv abc $name
liberate t.tcl | tee t.log
mv t.log t_$name.log
end
TCL script:
### t.tcl ###
reset_defaults -version 16.1.2set_var write_verilog_without_err_primitives $env(abc)
puts "$env(abc)"
printvars
source c2tcl.csh
環境變數(environment variables) |
TCL提供了一個事先就定義好的全域環境變數陣列,這個陣列叫做env。讀者可以將環境變數的名稱當成元素名稱來使用。換句話說,讀者可以使用變數名稱當做索引存取讀者想要存取的變數。下面的命令會印出PATH環境變數的內容: puts "$env(PATH)" 讀者可以操作一般的變數的方式來操作環境變數陣列。舉例來說,讀者可以使用下面的命令加入一個新的目錄到PATH中: set env(PATH): "$env(PATH):/usr/sbin" 這裡需要注意的是,環境變數的任何修改都不會影響到原始行程(舉例來說,讀者用來啟動TCL script的shell就是TCL script原始行程)的環境變數的內容。任何使用exec命令所建立出來的script行程,將會繼承修改過後的所有環境變數。 |
source $::env(golden_area)/common_settings/common_settings.tcl
2015年10月11日 星期日
散戶勝經-書摘
1. 選擇一隻好股票: 有資產 產品是業界第一名 老闆專心本業的好公司
在公司業績不好或市場超跌時買進
2. 投資大師巴菲特說:不要把雞蛋放在一個籃子裡
馬克吐溫說:把所有的雞蛋放在同一個籃子裡 然後小心的看好它
3. 選擇股票的時候第一個考量不是會不會賺 而是這支股票應該不會讓我賠
4. 郭大俠選股:
5. 融卷大增時開始分批賣 融資斷頭時開始分批買
在公司業績不好或市場超跌時買進
2. 投資大師巴菲特說:不要把雞蛋放在一個籃子裡
馬克吐溫說:把所有的雞蛋放在同一個籃子裡 然後小心的看好它
3. 選擇股票的時候第一個考量不是會不會賺 而是這支股票應該不會讓我賠
4. 郭大俠選股:
1. 只選上市股票,數千支變900支
管理越嚴格、資料越透明,這個企業的穩定性及安全性就越高,政府當局對上市公司有較嚴格的規定,即使規定嚴格,三不五時還發生倒閉掏空事件,管理不完善的上櫃或未上市公司,情況就更複雜。散戶投資股票,安全永遠是第一考量,所以我只選擇900家上市公司購買。
2. 只選擇明年有董監事改選的股票,900支變300支
董堅事三年一選,所以每年都有1/3的股票會改選,明年會改選,就表示改選前董監事不敢隨便賣股票,市場派也是虎視眈眈,股價當然易漲難跌。
3. 把不容易發生董監事改選行情的公司淘汰,300支變20支
下面這些公司,董監改選行情發生的機會比較低,不需要去傷腦筋研究。
* 曾經發生過經營權爭奪的公司,因為股權通常較穩定,故再發生的機會不大。
* 大股東是政府機關,民不與官鬥,故不易有改選行情。
* 家族企業,又用關係企業交叉持股,這種萬年公司最好少碰為妙。
* 公司資產欠佳,形象欠佳,本業獲利欠佳。
* 放棄五元以下的雞蛋水餃股。
* 景氣及股價正位於高檔,沒有被偷襲的空間。
4. 20支選5支
選 出來的20支都是不錯的公司,我們真正要做的功課,就是努力仔細的研究這20支股票。把他們過去的新聞及各種報表找出來,然後逐項分析,有疑慮的就放棄, 最後找出最佳的五家公司。這五家公司都必須是進可攻退可守,有漲100%的機會,萬一碰到不景氣,也有比定存好的現金股利可領,最重要的是當然也決不會倒 閉。
5. 最後的選擇不是由人決定。
5 支選2支就沒有什麼技術問題,當你下單買到其中的2支後,你就會自然特別關心他們,就好像我的老丈母娘看女婿一樣,越看是越中意。這時股價如果下跌,對你 來說不是損失,而是撿便宜的好機會。怕就怕你一買就漲,股價迅速一飛沖天,由於持股尚未建立,你也不願意追漲,今年的金雞母大概就飛掉了。
如 何選擇一支好股票,是股票投資由理論進入實務的開始,也是將來能否獲利的關鍵。雖然投資股票的獲利率通常較其他投資工具要高,但對於大部份不喜歡做功課的 散戶來說,虧損的風險相對反而更大。如果你已經盡了力,但還是選不出能獲利的好股票,不妨改以定存或債券來理財,也是一種不錯的投資方式,畢竟股票投資千 變萬化又風險難測,也不是所有人都適合的理財方法。
5. 融卷大增時開始分批賣 融資斷頭時開始分批買
2015年10月7日 星期三
Analysis passed rate for comparison results (compare_liberty)
How to use: perl failed_analysis.pl cl_NCX_vs_SIS_cycle_1_timing.rpt
Perl Script:
#!/usr/local/bin/perl
$FILE_NAME = $ARGV[0];
$pass_count = 0;
$fail_count = 0;
open(SearchFile,"<$FILE_NAME");
while(<SearchFile>){
chop $_;
@ary=split(" ",$_);
if ($ary[0] eq "Cell:") {
}
if ($ary[0] eq "Table:") {
$type = $ary[1] ;}
if ($ary[0] eq "Slew" && $ary[1] eq "Load") {
$sweep_count = 0;
}
## Count for Slew
if ($type eq "slew") {
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
$slew_pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
$slew_fail_count[$sweep_count-1] ++; }
}
}
## Count for Delay
if ($type eq "delay") {
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
$delay_pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
$delay_fail_count[$sweep_count-1] ++; }
}
}
## Count for slew + delay
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
#print "sweep_count is $sweep_count";
$pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
#print "sweep_count is $sweep_count";
$fail_count[$sweep_count-1] ++; }
}
$sweep_count ++ ;
}
Results:
amsoptr24:/remote/amscae35/chihwang/MTK>perl failed_analysis.pl cl_NCX_vs_SIS_cycle_1_timing.rpt
Slew passed rate table
********************
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
100.00% 100.00% 100.00% 100.00% 98.76% 97.72% 100.00%
100.00% 100.00% 100.00% 100.00% 100.00% 99.17% 98.96%
100.00% 100.00% 100.00% 100.00% 100.00% 99.79% 97.52%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 98.34%
99.59% 99.79% 100.00% 100.00% 100.00% 100.00% 99.17%
Delay passed rate table
********************
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 97.93% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 85.30%
99.59% 99.59% 99.59% 99.59% 99.59% 100.00% 85.71%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 84.89%
100.00% 98.34% 100.00% 100.00% 100.00% 100.00% 85.06%
Slew+Delay passed rate table
********************
99.79% 99.79% 99.79% 99.79% 99.79% 99.79% 93.27%
99.79% 99.79% 99.79% 99.79% 99.79% 99.79% 93.27%
99.79% 99.79% 99.79% 99.79% 98.34% 98.65% 93.27%
99.79% 99.79% 99.79% 99.79% 99.79% 99.38% 92.13%
99.79% 99.79% 99.79% 99.79% 99.79% 99.90% 91.61%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 91.61%
99.79% 99.07% 100.00% 100.00% 100.00% 100.00% 92.12%
Perl Script:
#!/usr/local/bin/perl
$FILE_NAME = $ARGV[0];
$pass_count = 0;
$fail_count = 0;
open(SearchFile,"<$FILE_NAME");
while(<SearchFile>){
chop $_;
@ary=split(" ",$_);
if ($ary[0] eq "Cell:") {
}
if ($ary[0] eq "Table:") {
$type = $ary[1] ;}
if ($ary[0] eq "Slew" && $ary[1] eq "Load") {
$sweep_count = 0;
}
## Count for Slew
if ($type eq "slew") {
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
$slew_pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
$slew_fail_count[$sweep_count-1] ++; }
}
}
## Count for Delay
if ($type eq "delay") {
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
$delay_pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
$delay_fail_count[$sweep_count-1] ++; }
}
}
## Count for slew + delay
if ($sweep_count > 1 && $sweep_count < 51) {
if ($ary[7] eq "pass") {
#print "sweep_count is $sweep_count";
$pass_count[$sweep_count-1] ++; }
if ($ary[7] eq "fail") {
#print "sweep_count is $sweep_count";
$fail_count[$sweep_count-1] ++; }
}
$sweep_count ++ ;
}
## print out analysis distribution results ##
## Slew
for ($i=1; $i<50; $i++) {
$slew_pass_rate[$i] = (($slew_pass_count[$i] / ($slew_pass_count[$i] + $slew_fail_count[$i])) * 100) ;
}
print "Slew passed rate table \n ******************** \n";
for ($j=1; $j<8; $j++) {
for ($k=1; $k<8; $k++) {
$slew_dig_0=sprintf("%.2f",$slew_pass_rate[($j-1)*7+$k]);
$slew_dig=$slew_dig_0.'%';
printf "%-10s" , $slew_dig;}
print "\n";}
## Delay
for ($i=1; $i<50; $i++) {
$delay_pass_rate[$i] = (($delay_pass_count[$i] / ($delay_pass_count[$i] + $delay_fail_count[$i])) * 100) ;
}
print "\n \n Delay passed rate table \n ******************** \n";
for ($j=1; $j<8; $j++) {
for ($k=1; $k<8; $k++) {
$delay_dig_0=sprintf("%.2f",$delay_pass_rate[($j-1)*7+$k]);
$delay_dig=$delay_dig_0.'%';
printf "%-10s" , $delay_dig;}
print "\n";}
## Total
for ($i=1; $i<50; $i++) {
$pass_rate[$i] = (($pass_count[$i] / ($pass_count[$i] + $fail_count[$i])) * 100) ;
}
print "\n \n Slew+Delay passed rate table \n ******************** \n";
for ($j=1; $j<8; $j++) {
for ($k=1; $k<8; $k++) {
$total_dig_0=sprintf("%.2f",$pass_rate[($j-1)*7+$k]);
$total_dig=$total_dig_0.'%';
printf "%-10s" , $total_dig;}
print "\n";}
Results:
amsoptr24:/remote/amscae35/chihwang/MTK>perl failed_analysis.pl cl_NCX_vs_SIS_cycle_1_timing.rpt
Slew passed rate table
********************
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 100.00%
100.00% 100.00% 100.00% 100.00% 98.76% 97.72% 100.00%
100.00% 100.00% 100.00% 100.00% 100.00% 99.17% 98.96%
100.00% 100.00% 100.00% 100.00% 100.00% 99.79% 97.52%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 98.34%
99.59% 99.79% 100.00% 100.00% 100.00% 100.00% 99.17%
Delay passed rate table
********************
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 97.93% 99.59% 86.54%
99.59% 99.59% 99.59% 99.59% 99.59% 99.59% 85.30%
99.59% 99.59% 99.59% 99.59% 99.59% 100.00% 85.71%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 84.89%
100.00% 98.34% 100.00% 100.00% 100.00% 100.00% 85.06%
Slew+Delay passed rate table
********************
99.79% 99.79% 99.79% 99.79% 99.79% 99.79% 93.27%
99.79% 99.79% 99.79% 99.79% 99.79% 99.79% 93.27%
99.79% 99.79% 99.79% 99.79% 98.34% 98.65% 93.27%
99.79% 99.79% 99.79% 99.79% 99.79% 99.38% 92.13%
99.79% 99.79% 99.79% 99.79% 99.79% 99.90% 91.61%
100.00% 100.00% 100.00% 100.00% 100.00% 100.00% 91.61%
99.79% 99.07% 100.00% 100.00% 100.00% 100.00% 92.12%
2015年10月2日 星期五
grep and sum up SIS+ChildTime of report_sim_stat by awk
grep ' statistical_setup__' timing_report.txt | awk -f cal.awk
cal.awk:
BEGIN {
sum = 0;
}
{
printf("%f\n", $2+$3);
sum = sum + $2 + $3;
}
END {
printf("\nSum = %f\n", sum);
}
cal.awk:
BEGIN {
sum = 0;
}
{
printf("%f\n", $2+$3);
sum = sum + $2 + $3;
}
END {
printf("\nSum = %f\n", sum);
}
訂閱:
文章 (Atom)
標籤
- 大盤 (6)
- 未分類資料夾 (2)
- 英文 (28)
- 書刊雜誌 (11)
- Perl (25)
- TCL (10)
- Uncategoried (1)
- UNIX Linux (43)