2014-07-30

ICCにて相対配置 (relative placement) を使用する例

Synopsys IC Compiler にて, 複数のセルを並べて配置する場合, relative placement を使用する. 予め, RP-group を作成しておき, それにセルを追加していく.
set rp1 [create_rp_group {rp1} -columns 2]
add_to_rp_group $rp1 -leaf core/cell1 -column 0
add_to_rp_group $rp1 -leaf core/cell2 -column 1

2014-07-29

FFmpeg にて HPF を使用する

ある音源を聞いていたら電源のノイズが音にのっているように感じたので, HPF (ハイパスフィルタ) を使用してみた.
ffmpeg -i input.mp3 -filter_complex highpass=f=500 output.mp3
FFmpeg のフィルタには, LPF (ローパスフィルタ) や BPF (バンドパスフィルタ) もあるようだ.

ICC エラー: could not open script file

Synopsys の IC Compiler は, ディジタル回路の物理レイアウト設計のデファクトスタンダードのツールである. このシェルで, source を実行すると, 以下のようにエラーが出ることがある.
icc_shell> source tcl/procs.tcl
Error: could not open script file "tcl/procs.tcl" (CMD-015)
ソースするときの検索パスは, search_path という変数に書かれているため, これを変更すると, 見つけることができなくなってしまうことがある. lappend search_path "." で検索パスに.を追加するか, 以下のように書けば良い.
icc_shell> source ./tcl/procs.tcl

2014-07-18

EL6をインストールした後, 削除しておきたいパッケージ

EL6 (RHEL6, CentOS6, Scientific Linux 6など) をインストールしたとき, 削除を考慮するべきパッケージを挙げておく. 最小構成などではインストールされないものもあるが, フル構成でインストールされる. 用途やポリシーによってはインストールしておいても良いが, たまにトラブルの原因になることもある.
  • mlocate - 名前でファイルを検索するツール
    毎日ファイルシステムを検索してデータベースを更新するので, 負荷がかかることがある.
  • prelink - ELFを事前にリンクするツール
    ELFバイナリをリンク済みのものに置き換えてしまう.

2014-07-17

ICC ZRoute にてシールド付配線を行う

ICC ZRoute では, シールド付の信号配線がサポートされている. もちろん, Classical Router でもサポートされていた.

グローバル配線・ディテイル配線の前に, シールドを付けたい配線だけ先に配線を行なう. 具体的な手順を以下に示す.

  1. 特定の信号だけ先に配線を行う.
    route_zrt_group -nets [get_nets important_net*]
  2. シールドを作成する.
    create_zrt_shield -nets [get_nets important_net*] -with_ground VSS -coaxial_above true -coaxial_below true

シールドの作成だけなら, route_zrt_auto後でも良いのだが, 他の配線が近くにできてしまうと, シールドを作ることができなくなる.

GCCにてプログラムセグメントのアドレスを取得

GCCでは, プログラムセグメントの番地を取得するシンボルが用意されている. etext, edata, end というグローバル変数を extern 属性を付けて宣言すれば良いらしい. 以下に, マニュアルからとってきた例を示す.
       #include 
       #include 

       extern char etext, edata, end; /* The symbols must have some type,
                                          or "gcc -Wall" complains */

       int
       main(int argc, char *argv[])
       {
           printf("First address past:\n");
           printf("    program text (etext)      %10p\n", &etext);
           printf("    initialized data (edata)  %10p\n", &edata);
           printf("    uninitialized data (end)  %10p\n", &end);

           exit(EXIT_SUCCESS);
       }

具体的な使い道が思い浮かばない...

2014-07-16

USB接続RS232Cポート

パソコンと実験用のFPGAボードを接続するのに, USB接続のRS232Cポートを使用していたのだけれど, 具合が悪かった. はじめ, FPGAの実装が悪いのかと思っていたのだけれど, RS232Cポートを別のものに変えたら, 好調になった.
以前使用していた 変換名人のUSB-RS232は, 色々と悪い評判が出ていたことがわかった.
今回使用したエムサーブのHL-340は問題ない. 価格も700円と安い.