2013年2月27日 星期三

ADS小電路模擬設定

個人用ADS喜歡把電路的小塊小塊變成一個個模組(component),比如說device建成一個模組,matching network建成一個模組,dc bias 的bypass電路建成一個模組。
這樣做的好處有:
1. 主電路不會太複雜,各個元件的關係十分清楚。
2. 要換掉元件十分容易,例如要把matching network從理想元件換成EM的S2P檔,只要改模組裡的接線即可。
3. 要對模組內的元件做微調時,可以清楚知道在微調哪個部分的元件,這在元件數多時很好用。
另一方面,這樣做也有幾個問題:
1. 大電路的模擬無法求得電流等資訊,即無法計算功耗,因此需要將dc線拉出來,造成電路稍加複雜。
2. 大電路的模擬設定會和小電路的相衝突,進行模擬時要將小電路的模擬關掉。

第2點煩人之處在於,大電路模擬和小電路模組行為的確認,幾乎都是要做的,例如DC bias 一定要加上bypass電路來隔離電源的雜訊,會先對bypass電路進行設計,進行S parameter模擬,確認頻帶內設計OK,再將bypass代入大電路中,這時候麻煩來了,ADS並不允許多重的模擬設定和模擬終端(term),此時要先將小電路的模擬設定和終端給取消掉,否則會產生重複的模擬設定;如果後來需要再次確認bypass的設計,就要再打開小電路的模擬設定和終端。
看device S2P也是,先在模組內模擬,確認device行為正常之後,要在大電路模擬,就需要進到read S2P的電路設計,把其中的模擬關掉;如果要換device,也要重開。
這樣每次來回的開關小電路的模擬設定,一是麻煩,二是徒然浪費時間,最後還容易做錯,實在不太聰明。

寒假個人自學了DesignPattern,前幾天突然從Design Pattern類似的概念,想到第二個問題的一個解法。 只要把bypass的implementation(電路架構)做成一個電路設計,bypass的模擬設定(interface)則做成另一個設計,這個模擬設定和大電路都各自包含bypass的implementation,要修改bypass,就到bypass模擬設定裡去tune,而大電路仍能正常模擬。
這樣一來,無論我要做大電路模擬或是調整小電路,都不需要再去開關小電路的模擬設定跟終端,可以簡省工作的時間,提升設計效率,看來沒事看看DP等其他領域的東西,也會有些收獲。

工作站passwd整理

最近開始涉入系上的Linux 工作站管理,這個工作最重要的就是耍廢維持工作站的穩定,及提供系上同學放心的用Linux進行模擬等工作。
每個學期定時的,會有新的同學加入,這時候就要幫大家設立新的帳號,很幸好會用Linux工作站的人不多,第一個原因是做電路的人佔比本來就比較少一點,第二個原因是大家自己的電腦好像都比工作站還要強,畢竟實驗室裡有一位光華商場的供貨中盤商,什麼i7-3770, E3記憶體插到32G的,哪天出現E5的電腦我都不驚訝了。

好像有點離題,總之是要幫大家建立帳號嘛w。
當然因為使用者不多,手動加也是OK,但老話一句:Working hard, after you know you are working smart,管帳號要怎麼smart管?
因為我們的server大約有400多位使用者,依照各不同的教授或管理員帳號分為26個群組。
其實可以很簡單的用script的方式,adduser, chown, chgrp, mkdir等,大量新增使用者,不算太難。
但因為我希望在passwd裡面,不同群組的使用者資料能連在一起,這樣有新人加入才能快速找到這位教授有多少學生,給予新生連號的UID編號。
後來發現這個有個簡單的解法,利用bash的sort即可輕鬆解決。
Sort -t: -k3 -n passwd
依序表示:用 : 為分割字,取第3個分段(GID)為key;key是一個數字,不是字串;這有點類似python sort指定key的味道,沒那麼威猛,但短小精幹,處理事情綽綽有餘,瞬間就完成passwd的排序。