999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Verilog在線評測系統(tǒng)設(shè)計與實(shí)現(xiàn)

2017-07-13 07:22:23張德學(xué)張小軍郭華
教育教學(xué)論壇 2017年29期

張德學(xué)+張小軍+郭華

摘要:近年來,在線評測系統(tǒng)(Online Judge,OJ)在多種編程語言的教學(xué)、ACM競賽中得到了廣泛應(yīng)用,實(shí)踐效果良好。Verilog是一種硬件描述語言,目前尚沒有支持該語言的在線評測系統(tǒng)。本文以較流行的在線評測系統(tǒng)HUSTOJ為基礎(chǔ),對其擴(kuò)展以支持Verilog語言,能夠?qū)崿F(xiàn)Verilog代碼在線編輯、提交、后臺仿真、結(jié)果評價,可用于Verilog語言個人學(xué)習(xí)、課堂教學(xué)、結(jié)課評測以及競賽。

關(guān)鍵詞:在線評測系統(tǒng),Verilog,Online Jud

一、前言

在線評測Online Judge系統(tǒng),簡稱OJ[1],是一個在線的判題系統(tǒng)。用戶可以在線提交程序源代碼(如C/C++/Java等),系統(tǒng)對源代碼進(jìn)行編譯和執(zhí)行,并通過預(yù)先設(shè)計的測試數(shù)據(jù)來檢驗(yàn)程序源代碼的正確性。OJ系統(tǒng)最初用于ACM-ICPC國際大學(xué)生程序設(shè)計競賽和OI信息學(xué)奧林匹克競賽中的自動判題和排名,現(xiàn)廣泛應(yīng)用于世界各地高校學(xué)生程序設(shè)計的訓(xùn)練、參賽隊員的訓(xùn)練和選拔、各種程序設(shè)計競賽以及數(shù)據(jù)結(jié)構(gòu)和算法的學(xué)習(xí)和作業(yè)的自動提交判斷中。著名的OJ系統(tǒng)有RQNOJ、URAL等,各具特色的OJ系統(tǒng)也在不斷的推出和完善。HUSTOJ[2]是一款出色的開源項(xiàng)目,由華中科技大學(xué)前ACM隊員Sempr等同學(xué)開發(fā),2008年5月14日首先上線于華中科技大學(xué),目前已有近百家學(xué)校、公司使用HUSTOJ進(jìn)行計算機(jī)程序設(shè)計競賽、計算機(jī)程序設(shè)計日常教學(xué)與測驗(yàn)、人才招聘等。HUSTOJ采用GPL開源,目前主要由張浩斌先生在維護(hù),項(xiàng)目地址:https://github.com/zhblue/hustoj。HUSTOJ仍在持續(xù)更新,目前支持C、c++、Java、bash、python、ruby等17種語言。

Verilog[3]是一種硬件描述語言,是主流的電子系統(tǒng)設(shè)計語言,是國內(nèi)外高校的EDA、FPGA、數(shù)字IC設(shè)計相關(guān)課程的重要內(nèi)容。Verilog語言主要面向硬件設(shè)計,有其獨(dú)特的特點(diǎn),但其代碼也可以通過仿真軟件在計算機(jī)中運(yùn)行、調(diào)試,與其他編程語言類似。目前尚沒有支持Verilog語言的在線評測系統(tǒng)。本文以HUSTOJ為基礎(chǔ),對其擴(kuò)展以支持Verilog語言,能夠?qū)崿F(xiàn)Verilog代碼在線編輯、提交、后臺仿真、結(jié)果評價,可用于Verilog語言個人學(xué)習(xí)、課堂教學(xué)、結(jié)課評測以及競賽。

二、HUSTOJ代碼框架

HUSTOJ分為core和web兩部分,分別對應(yīng)判題和數(shù)據(jù)管理兩大功能。兩者之間數(shù)據(jù)交換有兩種方式:(1)通過數(shù)據(jù)庫輪詢;(2)通過http請求。兩種方式的選擇在判題端的配置文件/home/judge/etc/judge.conf中,HTTP_JUDGE=1則啟用后者,默認(rèn)為前者。

core分3部分:judged、judge_client、sim,其中judged為服務(wù)進(jìn)程,負(fù)責(zé)輪詢數(shù)據(jù)庫或web端,提取判題隊列。當(dāng)發(fā)現(xiàn)新任務(wù)時產(chǎn)生judge_client進(jìn)程。judge_client進(jìn)程為實(shí)際判題程序,負(fù)責(zé)準(zhǔn)備運(yùn)行環(huán)境、數(shù)據(jù),運(yùn)行并監(jiān)控目標(biāo)程序的系統(tǒng)調(diào)用,采集運(yùn)行指標(biāo),判斷運(yùn)行結(jié)果。sim為抄襲檢查模塊,可進(jìn)行語法分析判斷文本相似度,通過檢驗(yàn)的程序?qū)⒂蒵udge_client復(fù)制進(jìn)題目數(shù)據(jù)的ac目錄,成為新的參考樣本。

web分兩大部分:前端和admin目錄下的管理程序。前端是數(shù)據(jù)庫的CRUD(增加Create、查詢Retrieve、更新Update和刪除Delete)操作,是將用戶提交的程序源碼加入數(shù)據(jù)庫的任務(wù)隊列(solution表、souce_code表)。管理程序提供賬號管理、試題等方面的功能。

三、HUSTOJ后臺數(shù)據(jù)庫

HUSTOJ后臺數(shù)據(jù)庫默認(rèn)名為jol,含18個表,主要的表有:users(帳號信息)、problem(問題)、solution(答案)、compileinfo(編譯輸出信息)、runtimeinfo(運(yùn)行時輸出信息)、contest(競賽信息)等,可使用phpmyadmin等工具查看其數(shù)據(jù)庫結(jié)構(gòu)。

四、HUSTOJ系統(tǒng)添加Verilog語言支持

通過閱讀HUSTOJ系統(tǒng)代碼,深入了解其工作原理,修改代碼添加新語言支持。HUSTOJ系統(tǒng)中有一份增添新語言支持的簡略說明,參見文檔[4]。

守護(hù)程序judged主要是定期查詢數(shù)據(jù)庫,發(fā)現(xiàn)有新任務(wù)時,提取測試需用的輸入輸出文件,并設(shè)置各種參數(shù),調(diào)用judge_client程序,judged的工作不涉及具體語言,無需修改。

主要的修改工作在judge_client.cc及相關(guān)頭文件中:

(1)在okcalls64.h中添加Verilog語言編譯運(yùn)行時需用到的syscalls。

本次項(xiàng)目中,Verilog代碼的編譯采用開源的iverilog仿真器。可用“apt-get install iverilog”安裝iverilog程序。

編寫一段簡單的Verilog代碼 helloworld.v:

module helloworld;

initial begin

$display("Hello,Verilog World!");

end

endmodule

執(zhí)行:strace -ff iverilog helloworld.v 2>&1|awk -F\( '{print $1}'|sort –u >strace.log)

可以得到iverilog編譯verilog代碼時所需用到的系統(tǒng)調(diào)用名稱,適當(dāng)修改后,寫入okcalls64.h中,如:

int LANG_VerilogV[256] = {

SYS_access,

SYS_arch_prctl,

SYS_brk,

/*部分略 */

0 };

(2)在judge_client.cc的void init_syscalls_limits(int lang)函數(shù)中,添加對新語言系統(tǒng)調(diào)用的支持,即在末尾處添加:

if (lang == 18) { //Verilog

for (i = 0;i==0||LANG_VerilogV[i];i++)

call_counter[LANG_VerilogV[i]] = HOJ_MAX_LIMIT;

}

(3)修改lang_ext變量,添加新語言后綴,本例添加了”v”

static char lang_ext[18][8] = { "c","cc","pas","java","rb","sh","py","php","pl","cs","m","bas","scm","c","cc","lua","js","v" };

(4)在judge_client.cc的int compile(int lang,char * work_dir)函數(shù)中,添加Verilog語言的編譯指令:

const char * CP_Verilog[] = { "iverilog","Main.v",NULL };

及執(zhí)行命令:

case 17:

execvp(CP_Verilog[0],(char * const *) CP_Verilog);

break;

(5)在judge_client.cc的void run_solution(int & lang,char * work_dir,int & time_lmt,int & usedtime,int & mem_lmt)函數(shù)中,添加Verilog代碼編譯后執(zhí)行語句:

case 18://verilog

execl("./a.out","./a.out",(char *) NULL);

break;

(6)在配置文件/home/judge/etc/judge.conf中添加verilog語言(編號為18)的支持:

OJ_LANG_SET=0,1,2,3,4,5,6,7,8,9,10,11,18

五、系統(tǒng)測試

在Ubuntu 14.04.5 LTS系統(tǒng)中安裝HUSTOJ原系統(tǒng),并添加Verilog語言支持后,客戶瀏覽器訪問http:///JudgeOnline,即可進(jìn)入HUSTOJ系統(tǒng)。系統(tǒng)運(yùn)行界面如圖1所示。

六、總結(jié)

本文深入研究了HUSTOJ的工作原理,并對其擴(kuò)展以支持Verilog語言,目前基本實(shí)現(xiàn)了Verilog支持,可用于Verilog語言個人學(xué)習(xí)及課堂教學(xué)。進(jìn)一步開發(fā)可從如下方面:(1)創(chuàng)建高質(zhì)量的題庫。HUSTOJ系統(tǒng)支持xml格式的題庫,利于交流,如freeproblemset[4]。建設(shè)高質(zhì)量題庫是提高在線評測系統(tǒng)實(shí)用性的關(guān)鍵措施之一。(2)考慮到Verilog這類硬件描述語言與普通編程語言的差別,即不能僅比對最終結(jié)果來判斷是否正確,還需要考慮內(nèi)部信號變化的時序問題,在判題方法上還需要進(jìn)一步研究。

參考文獻(xiàn):

[1] OJ. 百度百科. http://baike.baidu.com/view/1185778.htm,2017,2.

[2] HUSTOJ. zhblue. http://www.hustoj.com/oj/,2017,2.

[3] Verilog. wiki. https://en.wikipedia.org/wiki/Verilog,2017,2 .

[4] summary how to add programming language to hustoj . zhblue. https://github.com/zhblue/hustoj/blob/master/wiki/AddProgrammingLanguage.md,2017,2.

[5] freeproblemset. zhblue. https://github.com/zhblue/freeproblemset.git,2017,2.

Abstract:In recent years,online evaluation system (Online,Judge,OJ) in a variety of programming language teaching,ACM contest has been widely used in practice,good effect of.Verilog is a hardware description language,there is no online evaluation system that supports the language. This paper is based on HUSTOJ online evaluation system more popular. To extend it to support the Verilog language,Verilog code can achieve online editing,submission,background simulation,the evaluation result can be used in Verilog language learning,classroom teaching,teaching evaluation and competition.

Key words:online evaluation system;Verilog;Online Judge

主站蜘蛛池模板: 国产人免费人成免费视频| 乱人伦99久久| 精品国产一区91在线| 日本国产精品一区久久久| 永久免费精品视频| 白丝美女办公室高潮喷水视频| 在线观看无码a∨| 91精品专区国产盗摄| 九一九色国产| 亚洲第一香蕉视频| 国产成人久久777777| 伊人成人在线| P尤物久久99国产综合精品| 国产免费久久精品99re不卡 | 999精品免费视频| 精品少妇人妻无码久久| 亚洲国产在一区二区三区| 无遮挡国产高潮视频免费观看 | 亚洲成在人线av品善网好看| 国产农村1级毛片| 国产成人精品高清不卡在线 | 在线国产你懂的| 欧美一级夜夜爽| 国产激情第一页| 久久精品国产免费观看频道| 成年女人a毛片免费视频| 在线国产欧美| 中文字幕调教一区二区视频| 久久精品国产免费观看频道| 91精品日韩人妻无码久久| 91久久夜色精品国产网站| 67194在线午夜亚洲| 香蕉视频国产精品人| 国产成人高清精品免费5388| 99re在线免费视频| 欧洲亚洲一区| 男女精品视频| 狠狠干综合| 国产原创演绎剧情有字幕的| 91精品网站| 亚洲综合婷婷激情| a级毛片一区二区免费视频| 91口爆吞精国产对白第三集| 国产精品一区在线观看你懂的| 91口爆吞精国产对白第三集 | 亚洲男人的天堂网| 热思思久久免费视频| 狠狠色丁香婷婷| 99激情网| 国产美女无遮挡免费视频| 99在线小视频| 国产99在线观看| 精品伊人久久久香线蕉| 老司国产精品视频91| 91免费在线看| 韩日免费小视频| 成年片色大黄全免费网站久久| 国产精品短篇二区| 中字无码av在线电影| 在线色国产| 91精品国产综合久久香蕉922| 91视频国产高清| 久久综合色播五月男人的天堂| 欧美日韩资源| 日韩中文精品亚洲第三区| 国产成人综合亚洲欧洲色就色| 亚洲色图综合在线| 国模粉嫩小泬视频在线观看| 第九色区aⅴ天堂久久香| 一级高清毛片免费a级高清毛片| 国产自在自线午夜精品视频| 成人字幕网视频在线观看| 在线播放真实国产乱子伦| 亚洲性一区| 国产剧情国内精品原创| 精品视频福利| 九色在线观看视频| 亚洲国产欧美中日韩成人综合视频| 国产精品对白刺激| 欧美不卡二区| 欧美日韩动态图| 亚洲中文字幕手机在线第一页|