在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: xiuxing056

[求助] $fopen(fh, ...)在$fclose(fh)前不能将内容写到文件中去

[复制链接]
发表于 2023-3-10 11:38:04 | 显示全部楼层
ChatGPT的回答也不一定就是完全正确的,比如他说周期性调用$fclose(th),我比较疑惑的是,调用了fclose,后续还能正常往文件里面写入内容吗?我也没这么试过。
但是它的其他回答还是挺有参考价值的。
发表于 2023-3-10 11:50:36 | 显示全部楼层
问:systemverilog关于文件操作的系统函数有哪些?
答:
SystemVerilog提供了许多可以在设计中使用的内置文件操作系统函数,包括以下内容:

$fopen:打开文件并返回文件句柄。

$fgets:读取文件中一行的文本。

$fgetc:读取字符。

$fwrite:在文件中写入格式化的数据(文本或二进制数据)。

$fdisplay:在文件中写入格式化的字符串,使用println的方法。

$fclose:关闭文件。

$fscanf:从文件中读取格式化的数据。

$ferror:检查最近的文件操作是否失败。

$feof:检查文件是否已到达文件末尾。

$fflush:立即刷新输出缓冲区。

$fseek:将文件位置指针移动到指定位置。

$ftell:返回当前文件位置指针的偏移量。

这些内置函数可以帮助您在设计中操作文件,并与其他外部文件进行交互。使用时建议按照语言格式严格书写,避免语法错误和程序逻辑错误。

-------------------------------------------------------------------------------------------------------
我觉得前面的回答中,它说要手动调用fclose,应该是指的定期调用$fflush,刷新输出缓冲区,将缓冲区的内容输出到文件中去,这样可以最大化的保证内容不会丢失,当然,最后一次刷新,到异常退出这段时间的缓存可能会丢失,也许要用的上面所说的异常捕获机制来解决这个问题。
发表于 2023-3-10 14:57:00 | 显示全部楼层


飞翔的马甲 发表于 2023-3-10 11:38
ChatGPT的回答也不一定就是完全正确的,比如他说周期性调用$fclose(th),我比较疑惑的是,调用了fclose,后 ...


简单来说。。。每次写入文件后就调用$fclose关闭文件。。下次写入时重新$fopen(, "a")的方式附加在后面,写入完毕后立马$fclose就好。。。整个单次写入文件的过程打包成一个function/task,多次调用附加写入内容的方式即可。。不用这么复杂新增事件、phase什么的。。

发表于 2023-3-10 15:34:18 | 显示全部楼层


qsh123_123 发表于 2023-3-10 14:57
简单来说。。。每次写入文件后就调用$fclose关闭文件。。下次写入时重新$fopen(, "a")的方式附加在后面, ...


如果这样的话,调用$fflush就可以了
发表于 2023-3-10 15:51:31 | 显示全部楼层


飞翔的马甲 发表于 2023-3-10 15:34
如果这样的话,调用$fflush就可以了


function/task的封装最好具有一定的独立性。
用多次调用$fflush清空缓冲区的方式,事实上文件句柄和缓冲区是一直打开着的,function/task调用时时操作其外部的文件句柄和缓冲区;
将文件句柄通过输入输出参数的调用方式,每次调用写入完及时关闭文件,会让其封装调用过程独立完成,并可移植和继承到其他的地方去。假如使用$fflush,该文件操作过程就跟当前类强制绑定了,只能操作当前类的文件句柄。
实现同样功能的方法和手段很多,最重要的是贴合当前使用场景的思路,尽可能独立的调用过程有利于验证组件的复用。
另外,为了保存文件而新增和改动phase的调用过程或引入event,是能实现相应功能,但对环境复杂度提高的代价高了,只是为了写入一个文件的话不值得——除非你需要特别庞大而复杂的文件写入和控制过程,才有必要通过验证机制的介入——例如对不同agent的不同pahse控制不同的打印级别,保存到不同的log文件里面,然后分发给负责不同组件的验证团队成员进行分析debug,这种庞大的文件读写需求。


发表于 2023-3-10 16:03:49 | 显示全部楼层
最后,ChatGPT不能代替你思考。。它现阶段只能也最多能是个交互工具。ChatGPT的监督学习过程,代表着你需要监督,意味着你需要从它回答出来的大量冗余结果之中,选择真正对你有用的结果。。。筛选冗余结果的过程,就是训练过程——嗯,在你充分完成成千上万次地监督训练之前,它给你的答案绝对不是行业最优解,而是只能是所有的可能解,甚至可能是错误解,所以才需要监督——只要你老板不介意你训练一个机器人的时间和代价远高于你手上的研发产出就行。。。
发表于 2023-3-10 16:17:39 | 显示全部楼层
没仔细看,我以为手打了这么多字,还在感慨呢,结果是chatGPT
发表于 2023-3-10 16:24:43 | 显示全部楼层


qsh123_123 发表于 2023-3-10 16:03
最后,ChatGPT不能代替你思考。。它现阶段只能也最多能是个交互工具。ChatGPT的监督学习过程,代表着你需要 ...


我就知道会有人会说你这样的话,什么ChatGPT不能代替你思考之类的,这些都是正确的废话。

ChatGPT作为一个目前最牛逼的AI助手,是可以提高你的学习效率的,好工具要用起来

发表于 2023-3-10 16:38:57 | 显示全部楼层
这种情况很正常,本来文件的写就不是实时往里面写,都是最后flclose的flush进去的,没有flcose会导致只写了部分进去了
发表于 2023-3-10 17:08:25 | 显示全部楼层


飞翔的马甲 发表于 2023-3-10 16:24
我就知道会有人会说你这样的话,什么ChatGPT不能代替你思考之类的,这些都是正确的废话。

ChatGPT作为一 ...


ChatGPT只是目前最受追捧的聊天机器人而已。。现阶段要作为AI助手属实言过其实了。。5年后或许它的某方面模型经过足够充分的监督训练可以在该领域其到助手作用了。
嗯,起码一名及格的工具助手应该降低工作量和犯错几率,而不是现阶段的需要大幅度增加人工筛选和校验工作,这不叫助手,起码经常出现冗余无效答案+会犯错≠牛逼。你不会称呼你手下还在实习阶段且经常需要你去纠错的行业新人为牛逼的新人,对么?
现阶段你只是它的训练集之一罢了,当它从训练集毕业的时候才是其有资格成为工具的时候。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-8 09:29 , Processed in 0.023332 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表