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

主站蜘蛛池模板: 国产成人喷潮在线观看| 高清亚洲欧美在线看| 国产精品永久久久久| 日韩精品亚洲人旧成在线| 五月婷婷伊人网| 五月天久久婷婷| 午夜国产精品视频| 欧美精品另类| 国产免费精彩视频| 不卡无码h在线观看| 国产va欧美va在线观看| AV片亚洲国产男人的天堂| 欧美福利在线播放| 久久久久亚洲av成人网人人软件| 青草视频网站在线观看| 中国一级毛片免费观看| 国产一二三区视频| 日本日韩欧美| 久草视频精品| 伊人婷婷色香五月综合缴缴情| 免费无码AV片在线观看中文| 天天摸夜夜操| 99热这里只有精品免费国产| 一级看片免费视频| 午夜福利网址| 国外欧美一区另类中文字幕| 美女毛片在线| 在线免费观看a视频| 国产美女视频黄a视频全免费网站| 欧美三级视频在线播放| 久草国产在线观看| 人妻丰满熟妇AV无码区| 亚洲精品国产首次亮相| 色综合天天视频在线观看| 老色鬼久久亚洲AV综合| 爱爱影院18禁免费| 在线欧美国产| 在线亚洲精品福利网址导航| 欧美亚洲国产精品第一页| 国产精品免费p区| 亚洲人成网站18禁动漫无码 | 99热这里只有成人精品国产| 久久国产拍爱| 国产中文一区a级毛片视频| 亚洲无线视频| 午夜福利无码一区二区| 国产精品第页| 精品無碼一區在線觀看 | 91网站国产| 久久精品欧美一区二区| 午夜福利在线观看入口| 视频二区亚洲精品| 啪啪国产视频| 有专无码视频| 国产成人久视频免费| 久久香蕉欧美精品| 国产鲁鲁视频在线观看| 国产精品久久久免费视频| 亚洲日韩精品伊甸| 欧美日韩高清| 亚洲Va中文字幕久久一区| 精品视频第一页| 亚洲无线国产观看| 国产特一级毛片| 色综合久久无码网| 美女黄网十八禁免费看| 全部无卡免费的毛片在线看| 亚洲av无码久久无遮挡| 91在线激情在线观看| 精品视频一区二区观看| 亚洲无码视频喷水| 欧美a网站| 伊人激情综合网| 亚洲色图欧美一区| 国产成人久久777777| a级免费视频| 国产农村精品一级毛片视频| 国产凹凸视频在线观看| 亚洲综合九九| 日本高清在线看免费观看| 毛片视频网址| 亚洲第一区在线|