热度 1| |
svn中有mcd(multi_channel_descriptor)和fd两种文件句柄,都是32bit的值。
二者通过MSB(bit 31)彼此 区分,mcd的31bit为0,fd的最高bit为1
如果打开文件时使用$fopen("filename","type")的形式则返回的是fd。如果沈略type既$fopen("filename")则系统返回的是mcd,且文件是写模式。
mcd的每一个bit对应一个打开的文件,而fd是每一值对应一个打开的文件。这造成可以通过mcd同时向多个文件写入,而fd则只能同时对一个文件进行读写。
如:
mcd1 = $fopen("file1");
mcd2 = $fopen("file2");
则$fwrite(mcda|mcd2, "abc");可以向file1 file2 同时写入“abc”
此外mcd有一个保留值‘h00000001 表示STDOUT(屏幕输出)
fd有三个保留值‘h80000000 (STDIN) ‘h80000001 (STIOUT) ‘h80000002 (STDERR)
其中可以通过‘h80000000这个保留fd实现sv的输入交互。
比如通过$fsacnf('h80000000,"%s",str);就可以在仿真时获取键盘输入。
虽然验证环境在仿真时几乎不需要键盘交互,但在一些平台调试过程中该功能却能提供一些便利