NJU-ProjectN / nvboard

NJU Virtual Board
Other
224 stars 48 forks source link

Add a missing pin RST for board file #18

Closed DreamChaser-luzeyu closed 1 year ago

DreamChaser-luzeyu commented 1 year ago

According to constrs.h, there existing a pin named RST. However, the RST pin did not exist in board file N4, maybe due to carelessness, or maybe the board file N4 is just out of date.

sashimi-yzh commented 1 year ago

The RST pin is really unused. See commit 079dd0e643be1ac73090d16265e165499633094f.

sashimi-yzh commented 1 year ago

为什么你认为这些include不规范? 这些文件确实不在当前目录下, 用双引号没有实质性的作用

DreamChaser-luzeyu commented 1 year ago

为什么你认为这些include不规范? 这些文件确实不在当前目录下, 用双引号没有实质性的作用

抱歉,我第一次发PR,还不太熟悉,改完N4文件后发的PR,然后自己又新增了些注释,本意是提交到fork出的仓库里,但忘记了PR是分支级的操作,而不是commit级的…这个commit我已经rebase掉了。

关于include使用尖括号还是双引号,我个人的习惯是,对于引用同一个项目中的头文件,应使用双引号,引用Linux、STL或其他工具链提供的包含路径中的头文件才使用尖括号,这样就能一眼看出include引用的是不是项目中的头文件。

DreamChaser-luzeyu commented 1 year ago

The RST pin is really unused. See commit 079dd0e.

可否进一步说明“仅复位RTL设计部分会使其与NVBoard状态不一致”?NVBoard状态是指什么呢?按照我目前的浅显理解,RST接口绑定到RTL Design中的rst信号中,对于Verilator来说它只是一个普通的信号,和其他的按键与拨码开关的信号地位相同。对于NVBoard来说,如果不考虑VGA、PS/2这些复杂的实现,那么NVBoard本质只是将这些信号可视化出来,并提供了与用户交互的图形界面罢了,为什么单独这个RST引脚就特殊,不能被使用呢?

按照我目前的浅显理解,这样确实可能会导致部分不完整的时序被输入RTL部分(PS/2),或者从RTL部分读到不完整的时序(VGA),但为什么要严格规避这样的行为呢?放在现实中,这种情况也无法保证不发生。还是说,我的理解有误,还有其他的考量呢?

sashimi-yzh commented 1 year ago

关于include使用尖括号还是双引号,我个人的习惯是,对于引用同一个项目中的头文件,应使用双引号,引用Linux、STL或其他工具链提供的包含路径中的头文件才使用尖括号,这样就能一眼看出include引用的是不是项目中的头文件。

关于include后符号的使用, 我查了一些资料, 发现有不同的使用习惯, 例如这个帖子.

按照我目前的浅显理解,这样确实可能会导致部分不完整的时序被输入RTL部分(PS/2),或者从RTL部分读到不完整的时序(VGA),但为什么要严格规避这样的行为呢?放在现实中,这种情况也无法保证不发生。还是说,我的理解有误,还有其他的考量呢?

你说得对, 就是考虑到这些问题, 才不推荐在NVBoard里面使用RST引脚, 而且将来如果要在NVBoard里面添加更多功能, 我们也不希望添加每个新功能的时候都考虑"如何在RST有效的情况下正确工作". 考虑到软件模拟和现实的差异, 没有必要追求现实中的复位方式. 事实上, 如果要使用NVBoard, 最彻底的复位方式就是关闭程序重新运行, 所以也没有必要使用RST引脚了.