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

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

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

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

摘要:近年來,在線評測系統(tǒng)(Online Judge,OJ)在多種編程語言的教學(xué)、ACM競賽中得到了廣泛應(yīng)用,實踐效果良好。Verilog是一種硬件描述語言,目前尚沒有支持該語言的在線評測系統(tǒng)。本文以較流行的在線評測系統(tǒng)HUSTOJ為基礎(chǔ),對其擴展以支持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)對源代碼進行編譯和執(zhí)行,并通過預(yù)先設(shè)計的測試數(shù)據(jù)來檢驗程序源代碼的正確性。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]是一款出色的開源項目,由華中科技大學(xué)前ACM隊員Sempr等同學(xué)開發(fā),2008年5月14日首先上線于華中科技大學(xué),目前已有近百家學(xué)校、公司使用HUSTOJ進行計算機程序設(shè)計競賽、計算機程序設(shè)計日常教學(xué)與測驗、人才招聘等。HUSTOJ采用GPL開源,目前主要由張浩斌先生在維護,項目地址: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è)計,有其獨特的特點,但其代碼也可以通過仿真軟件在計算機中運行、調(diào)試,與其他編程語言類似。目前尚沒有支持Verilog語言的在線評測系統(tǒng)。本文以HUSTOJ為基礎(chǔ),對其擴展以支持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則啟用后者,默認為前者。

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

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

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

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

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

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

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

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

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

本次項目中,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)用名稱,適當修改后,寫入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,即可進入HUSTOJ系統(tǒng)。系統(tǒng)運行界面如圖1所示。

六、總結(jié)

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

參考文獻:

[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

主站蜘蛛池模板: 亚洲精品无码专区在线观看| 91精选国产大片| 中文字幕亚洲乱码熟女1区2区| 免费xxxxx在线观看网站| 亚洲精品va| 夜精品a一区二区三区| 99在线视频免费| 国产成人凹凸视频在线| 久久一色本道亚洲| 亚洲色欲色欲www在线观看| 色播五月婷婷| 四虎亚洲国产成人久久精品| 亚洲中文在线视频| 亚洲码一区二区三区| 国产二级毛片| 国产精品入口麻豆| 成人免费视频一区| 波多野结衣AV无码久久一区| aaa国产一级毛片| 香蕉视频国产精品人| 天天摸夜夜操| 亚洲福利网址| 久久国产精品波多野结衣| 国产在线高清一级毛片| 四虎成人在线视频| 人妻中文久热无码丝袜| 一区二区三区成人| 国产成人一区免费观看 | 久久婷婷五月综合色一区二区| 在线观看免费人成视频色快速| 色欲不卡无码一区二区| 好久久免费视频高清| 国产清纯在线一区二区WWW| 国产精品福利导航| 久久一级电影| 亚洲精品午夜无码电影网| 精品少妇三级亚洲| 国产精品爆乳99久久| 青草视频免费在线观看| 夜夜操天天摸| 成人精品区| 中文字幕在线日韩91| 日韩美毛片| 中文一区二区视频| a在线亚洲男人的天堂试看| 国产亚洲精久久久久久久91| 伊人久久久久久久| 四虎永久在线| Jizz国产色系免费| 国产免费高清无需播放器| 亚洲日韩精品无码专区| 亚洲天堂日韩在线| 无码啪啪精品天堂浪潮av| 国产日韩欧美成人| 国产精品亚洲综合久久小说| 国产SUV精品一区二区6| 国产视频a| 人妻一区二区三区无码精品一区| 久久亚洲日本不卡一区二区| 手机看片1024久久精品你懂的| 亚洲精品天堂自在久久77| 在线看免费无码av天堂的| 亚洲最大综合网| 最新亚洲人成无码网站欣赏网| 激情午夜婷婷| 午夜免费小视频| 成年人国产视频| 精品国产成人高清在线| 综合久久五月天| 91精品免费高清在线| 97国产在线观看| 色网在线视频| 色婷婷亚洲综合五月| 国产一级二级三级毛片| a欧美在线| 天天操天天噜| 国产成人永久免费视频| 国产日韩AV高潮在线| 精品无码专区亚洲| 久久国产热| av在线无码浏览| 影音先锋亚洲无码|