[0026] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0027] 相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
[0028] 首先,需要了解的是本发明所述一种在线Verilog代码自动判决系统的自动评分方法,在本实施例中是用于实现关于Verilog类题目代码的正确率高低的判决系统。当判题系统运行时,其系统将开启一个独立的进程进行答案判定。
[0029] 参见图1,为本发明实施例的本发明的技术方案为在线Verilog代码自动判决系统的自动评分方法的步骤流程图,包括以下步骤:
[0030] S1,系统访问标准答案库,复制对应的标准答案文件存放到临时文件夹;标准答案文件包括.do文件,.vt文件,.cmp文件,.tm文件,其中.do文件用于编译verilog代码和.vt文件,.vt文件用于对输入信号进行激励和对输出信号进行抓取,.cmp文件用于对比输出结果,.tm文件用于记录输出对比所需要忽略的时间范围;
[0031] S2,系统运行标准答案文件夹中的.do文件、.vt文件编译学生提交的Verilog代码文件,并进行库的加载;其中所需要的库写在.do文件内;
[0032] S3,系统在linux下运行modelsim进行.vt仿真,根据学生提交的答案Verilog文件进行仿真,截取控制台输出至.result文件;
[0033] S4,系统根据.tm文件中所书写的时间范围,对比仿真结果.result文件和标准答案.cmp文件计算得到分数结果,计算方式为:(1‑不匹配的时间点的总数/.cmp文件中的时间点总数)×100,如果结果为复数就记为0。
[0034] 参见图2,为具体实施例的步骤流程图,S1系统访问标准答案库,复制对应的标准答案文件存放到临时文件夹,具体包括:
[0035] S10,系统根据题目寻找到标准答案库中相对应的标准答案;
[0036] S11,新建临时答案文件夹;复制标准答案.do文件,.vt文件,.tm文件,.cmp文件放入系统临时的答案文件夹。
[0037] S2系统运行标准答案文件夹中的.do文件、.vt文件编译学生提交的Verilog代码文件,并进行库的加载,具体包括:
[0038] S20,建立modelsim工程编译学生提交的Verilog代码和答案文件夹中的.vt文件;
[0039] S21,若是编译不成功返回编译错误结果,删除答案文件夹;若是编译成功,运行.do文件,通过vsim命令进行库文件的添加以及.vt的仿真。
[0040] S3系统在linux下运行modelsim进行.vt仿真,具体包括:
[0041] S30,运行.vt文件,其中所需要输出的待测试模块,各个信号的激励以及抓取信号的指令$monitor都写在.vt文件中;
[0042] S31,将所有输出打包成为.result文件。
[0043] S4系统根据.tm文件中所书写的时间范围,对比仿真结果.result文件和标准答案.cmp文件计算得到分数结果,具体包括:
[0044] S40,系统对比两个文件的输出信号结果,若是结果正确则继续;若是结果错误直接返回网页零分,并删除答案文件夹;
[0045] S41,系统根据.tm文件中所书写的时间范围,对比.cmp文件和带时间戳的仿真结果.result文件,根据(1‑不匹配的时间点的总数/.cmp文件中的时间点总数)×100,如果结果为复数就记为0,得到学生分数成绩;
[0046] S42,返回网页学生成绩并删除答案文件夹。
[0047] 上述判题过程使用多进程方式,每个进程都能执行完整的判题操作,使得多用户能同时访问,满足了用户的需求。
[0048] 上述本申请实施例中的技术方案,可以判断Verilog代码的语法正确性,可以判断Verilog答案的效果正确性,可以返回Verilog代码的错误原因,可以直接返回成绩给用户,可以多用户同时进行判决。所以,有效解决了现有技术中缺乏关于Verilog类题目答案的判决系统的技术问题,进而实现了能够智能化、不间断运行、无人工操作的判决Verilog代码正确率的技术效果。
[0049] 本方法对其他HDL硬件描述语言的题目也同样适用,包括VHDL、System C和SystemVerilog。
[0050] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。