いつもコピペでテストベンチを書いていたので、いまさらながら調べてみました。
$fopen
書式:$fopen("file_name", file_type)
ファイルを開く。32bitのmultichannel descriptor か32bitのfile descriptorを返すので、integerで受け取る。32bitのMSBは予約され、常にset(1)が推奨される。STDIN、SDTOUT、STDERRの3つのfile descriptorは、pre-openされており、それぞれ0x8000_0001、0x8000_0002、0x8000_0003の値を持っている。
veritakでもこの1行でメッセージを表示できる。
$fwrite(32'h8000_0003, "Hello world");
file_typeは以下の値を取る。省略時はw指定と同じ。+は読み書きを可能にし、bはバイナリモードの指定を行う。"w"、"w+"はファイルを開いた時点でファイルサイズが0になるので注意する。
file_type | decscirtion |
---|---|
"r" or "rb" | 読み出し専用 |
"w" or "wb" | 書き込み専用 |
"a" or "ab" | ファイルの最後に追加する。もしくは書き込み専用でファイルを作成する |
"r+", "r+b" or "rb+" | 読み書き(for update) |
"w+", "w+b" or "wb+" | 読み書き(for update) |
"a+", "a+b" or "ab+" | 読み出しと追記(for update) |
"r+"と"w+"の違い。
ファイルが存在しなかったとき、"r+"は0を返し、"w+"は新しいファイルを作る。
"w+"と"a+"の違い
"a+"はファイルの最後にしか追加が出来ない。
$fclose
書式:$fclose(mcd) or $fclose(fc)
ファイルを閉じる。
引数は、fopenの戻り値であるmultichannel descriptorかfile descriptorを指定する。