论文部分内容阅读
摘要:针对集成电路设计与集成系统专业Unix操作系统实践课程的特点,以实际工作需求为导向,以培养学生的实际应用能力为目标,研究探索应用型教学方法和教学手段。实践证明,通过改革教学方法、构建模拟实际工作环境的实践平台以及强化案例教学可以有效激发学生的学习兴趣,锻炼学生对操作系统的应用能力,获得了良好的教学效果。
关键词:案例教学;Unix操作系统实践;集成电路设计
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)30-0085-02
Unix操作系统是目前使用的多用户、多任务操作系统中发展最快、用途最广的一种。与其他操作系统相比,其具有功能强大、技术成熟、可靠性高、网络功能强以及开放性好等优点,可满足各行各业实际应用的需要,受到企业用户的欢迎。[1]从事集成电路设计的企业绝大部分都采用Unix/Linux系统,而且大多数集成电路设计工具都是在Unix/Linux环境下运行的,相应地,作为集成电路设计工程师,日常工作都是在Unix/Linux操作系统环境下完成的。作为集成电路设计与集成系统专业的学生就应该掌握Unix/Linux基本命令,能够熟练操作Unix系统,了解一些shell编程方法,具备一定的Unix/Linux操作系统基本应用能力。
一、基于应用型人才培养选择合适的教学方法
1.改革教学方法,激发学生兴趣
Unix操作系统实践课程的特点非常突出,内容丰富但课时数量有限。要想学有所获,学生只有通过动手实践才能真正掌握课程内容,提高自己对Unix系统的基本应用能力以及在Unix 下的C Shell脚本编程能力。目前,Unix/Linux操作系统课程已被很多高校作为计算机专业及相关专业的核心基础课程,讲解Unix/Linux操作系统基本原理及其内核实现方法。但是对于非计算机专业的学生来说,这显然是不合适的,他们一般不会参与操作系统的开发,他们需要的是在掌握Unix/Linux操作系统基本操作的基础上能够熟练应用一些基本开发工具来完成日常工作。[2]因此,该课程的课堂讲授应该简明,并尽可能以直观的演示、示范为主,提高学生们对课程的兴趣。在教学过程中,注重讨论式教学,注重引导学生进行自主式、探究式学习,培养学生对知识点的深层理解、分析、比较和融会贯通的综合能力。同时要结合Linux操作系统系统实践平台,经过大量的上机实践,让学生掌握Linux操作系统的基本应用以及C SHELL脚本编程方法,培养学生的基本应用能力。在上机实践过程中,可以根据不同的学习能力设置学习小组,每个小组2~3 人,包括学习能力较强和较弱的同学,通过鼓励小组讨论和布置小组任务的形式提高学习的效率。
2.构建模拟实际工作环境的实践平台
Unix/Linux操作系统是一门实践性很强的课程,众多的命令需要学生上机操作,且要求熟记命令的应用。根据课程的特点,学生需要经过大量的上机实践来学习Unix/Linux操作系统的一些基本应用,因此需要为此搭建一个能模仿实际工作环境的实践平台。一般来说,学校公共机房基本上都是安装Windows系统,很少有专门安装Unix/Linux系统的机房。Linux是一套免费使用和自由传播的类Unix操作系统,Linux兼容绝大部分Unix标准,能够在个人计算机上实现全部的Unix特性,因此本课程实践中采用虚拟机软件VMware来构建虚拟的Linux操作系统实验平台,具体步骤如下[3]:选择硬件配置较高的计算机作为Linux操作系统实验平台的主机;在主机上安装VMware 虚拟机软件;可以从网上下载一个Linux安装镜像文件(.iso),然后利用VMware 虚拟机软件安装Linux操作系统,在安装过程中选择从已下载的镜像文件安装,其他就利用默认选项,直到Linux操作系统安装完毕;运行Linux虚拟操作系统,安装并设置好集成电路设计相关的EDA软件。至此,已经构建了一个能模拟实际工作环境的Linux操作系统实践平台。
3.强化案例教学,增强学生的时间能力
Unix操作系统实践课程的定位是在介绍Unix操作系统基本操作的基础上,通过学习C Shell脚本语言并进行程序设计,更好地运用Unix系统进行项目管理和开发工作,同时为后续的各门课程提供一个基础研究平台,是集成电路设计与集成系统专业的一门基础课。该课程具有很强的理论性和实践性,一方面需要学生学习Unix环境下常用命令以及C Shell编程的基本概念、设计方法,另一方面又须借助大量实践才能掌握这些知识。因此,采用传统的教师讲授教学模式往往会使学生丧失学习兴趣,也很难培养其实践应用能力。引入案例教学法,将知识融入案例之中,重视实践和工程经验,可以大大激发学生的学习兴趣,发挥其主动性和创造性,从而达到提高教学质量的目的。
二、Unix实践教学案例策划和案例设计
1.案例策划
以大规模数字集成电路设计为例,在用Verilog HDL语言编写好设计代码后需要进行大量的仿真。针对每一种可能的输入以及不同的参数都会有一个专门的测试文件(testbench)对编写好的代码进行仿真测试,仿真结束后对仿真结果(可能有文本记录文件或者波形文件)进行分析。每一个仿真所花费的时间可能不同,短的可能只需几分钟,长的可能需要几个小时,甚至几十个小时。一般来说企业里的工程师们上班一天只有8小时,那么如何充分利用晚上的时间来做仿真测试呢?通常的做法就是自己编写一个或一系列的C Shell脚本,让脚本自动运行仿真测试程序,当一个仿真结束后自动保存该仿真的结果,然后继续运行下一个仿真,直到全部仿真完成。这样就可以充分利用非上班时间来自动完成仿真,工程师们只需要在仿真完成后查看一下仿真结果是否正确,而不需要关心一个仿真什么时候结束,什么时候该启动下一个仿真,大大提高了工作效率。 2.案例设计
(1)设置教学案例仿真环境。在linux操作系统中,安装好仿真软件,需要仿真的相关设计文件均已准备好。仿真工具为“/home/user1/tools/bin/ncverilog”,需要仿真的设计文件已经列在“/home/user1/project/src/rtl_code.f”中,用于仿真验证的行为模型文件为“/home/user1/project/model/behv_model.v”,仿真使用的库文件为“/home/user1/project/lib/rtl_lib.v”,仿真测试文件有100个,存放在目录“/home/user1/project/testbench”下,每个文件对应一种测试条件,文件名分别为:“pat_1.v”,“pat_2.v”,…,“pat_30.v”,“clk_1.v”,“clk_2.v”,…,“clk_50.v”,“case_1.v”,“case_2.v”,…,“case_20.v”。所有仿真结束后都会生成两个结果文件,分别是一个仿真记录文件“ncverilog.log”和一个波形“test.fsdb”。当一个仿真结束时需要将结果文件移至目录“/home/user1/project/sim/result”下,并将其更名为与测试文件相同的名字,扩展名保持不变。
(2)编写C Shell脚本。根据仿真环境以及所选案例需要完成的任务功能,编写C Shell脚本,自动完成相应的工作。编好的C Shell脚本还需经过调试,确定脚本功能是否符合任务的要求。脚本具体内容如下:
#!/bin/csh
set TOOL = “/home/user1/tools/bin/ncverilog +access+rw ”
set SRC = “-f /home/user1/project/src/rtl_code.f”
set MODEL = “/home/user1/project/model/behv_model.v”
set LIB = “-v /home/user1/project/lib/rtl_lib.v”
set TESTBENCH_DIR = “/home/user1/project/testbench”
set RESULT_DIR = “/home/user1/project/sim/result”
#列出所有的测试文件名
set TEST_PATTERN = (pat_1 pat_2 … pat_30 clk_1 clk_2 … clk_50 case_1 case_2 … case_20)
echo “simulation start at `date` ” > run.log
foreach testname ($TEST_PATTERN)
echo “run simulation pattern: $testname ”
#启动一次仿真
$TOOL $ TESTBENCH_DIR /$testname.v $SRC $MODEL $LIB
#如果仿真出现错误,在ncverilog.log文件中会出现“Error”字符,并提示
set ERROR = `grep Error ncverilog.log`
if($ERROR == “”)then
echo “Pass! test_pattern: $testname ”>> run.log
else
echo “Error! Test_pattern: $testname ”>> run.log
endif
#保存仿真记录文件和波形文件
mv ncverilog.log $ RESULT_DIR/$testname.log
mv test.fsdb $ RESULT_DIR/$testname.fsdb
end
(3)脚本运行结果。运行编好的C Shell脚本,自动完成所需要的仿真,大大提高工作效率,可以清楚地发现某个仿真过程是否出现错误。当所有仿真都完成后,首先可以查看运行记录文件run.log文件,如:
simulation start at Sun May 4 14:42:07 CST 2014
Pass! test_pattern: pat_1
Pass! test_pattern: pat_2
Pass! test_pattern: pat_3
Error! test_pattern: pat_4
Pass! test_pattern: pat_5
...
从中可以发现第4个仿真pat_4出现错误。此外,还可以在结果目录(/result)下查看每一个仿真的记录文件“.log”和波形文件“.fsdb”,详细验证该仿真结果是否正确。
3.案例教学效果
在本案例的教学过程中,开始给出需要解决的问题之后,鼓励学生认真思考分析问题,并积极引导学生找出解决问题的方案,然后让学生运用所学的Unix基本操作以及C Shell编程等知识来完成本案例的任务。通过这种方式选择合适的教学案例就可以加深学生对Unix/Linux常用命令、C Shell语法(如:控制结构、循环结构)等内容的理解,让学生学会将所学知识融会贯通,更好地为解决实际问题服务。总之,在案例的选择上要选择实际工作中遇到的问题,不能凭空臆造案例,同时要充分考虑到学生的兴趣爱好,培养学生运用所学知识来分析并解决实际问题,提高学生的应用能力。[4]
三、结语
Unix/Linux操作系统的基本应用是集成电路设计从业人员必须具备的一项基本技能,而Unix操作系统实践课程的目标也是为了培养学生对Unix/Linux操作系统的基本应用能力。实践证明,通过改革教学方法、构建模拟实际工作环境的实践平台以及强化案例教学可以有效激发学生的学习兴趣,锻炼学生解决问题和实际应用能力,大大提高了教学效果。
参考文献:
[1]姜畅.案例教学在Unix Shell 编程课程中的应用[J].江苏教育学院学报(自然科学),2010,(4):1-3.
[2]薛迎霄,王禹.高校Linux 课程教学研究[J].广东技术师范学院学报,2004,(6):78-79.
[3]赵艳红,段汉根,沈峰.Linux操作系统实验教学研究[J].农业网络信息,2010,(8):145-147.
[4]谭琨,刘春.基于Linux实验教学提高IT专业应用型人才能力培养模式的研究与实践[J].中国科教创新导刊,2011,(26):48.
(责任编辑:王祝萍)
关键词:案例教学;Unix操作系统实践;集成电路设计
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)30-0085-02
Unix操作系统是目前使用的多用户、多任务操作系统中发展最快、用途最广的一种。与其他操作系统相比,其具有功能强大、技术成熟、可靠性高、网络功能强以及开放性好等优点,可满足各行各业实际应用的需要,受到企业用户的欢迎。[1]从事集成电路设计的企业绝大部分都采用Unix/Linux系统,而且大多数集成电路设计工具都是在Unix/Linux环境下运行的,相应地,作为集成电路设计工程师,日常工作都是在Unix/Linux操作系统环境下完成的。作为集成电路设计与集成系统专业的学生就应该掌握Unix/Linux基本命令,能够熟练操作Unix系统,了解一些shell编程方法,具备一定的Unix/Linux操作系统基本应用能力。
一、基于应用型人才培养选择合适的教学方法
1.改革教学方法,激发学生兴趣
Unix操作系统实践课程的特点非常突出,内容丰富但课时数量有限。要想学有所获,学生只有通过动手实践才能真正掌握课程内容,提高自己对Unix系统的基本应用能力以及在Unix 下的C Shell脚本编程能力。目前,Unix/Linux操作系统课程已被很多高校作为计算机专业及相关专业的核心基础课程,讲解Unix/Linux操作系统基本原理及其内核实现方法。但是对于非计算机专业的学生来说,这显然是不合适的,他们一般不会参与操作系统的开发,他们需要的是在掌握Unix/Linux操作系统基本操作的基础上能够熟练应用一些基本开发工具来完成日常工作。[2]因此,该课程的课堂讲授应该简明,并尽可能以直观的演示、示范为主,提高学生们对课程的兴趣。在教学过程中,注重讨论式教学,注重引导学生进行自主式、探究式学习,培养学生对知识点的深层理解、分析、比较和融会贯通的综合能力。同时要结合Linux操作系统系统实践平台,经过大量的上机实践,让学生掌握Linux操作系统的基本应用以及C SHELL脚本编程方法,培养学生的基本应用能力。在上机实践过程中,可以根据不同的学习能力设置学习小组,每个小组2~3 人,包括学习能力较强和较弱的同学,通过鼓励小组讨论和布置小组任务的形式提高学习的效率。
2.构建模拟实际工作环境的实践平台
Unix/Linux操作系统是一门实践性很强的课程,众多的命令需要学生上机操作,且要求熟记命令的应用。根据课程的特点,学生需要经过大量的上机实践来学习Unix/Linux操作系统的一些基本应用,因此需要为此搭建一个能模仿实际工作环境的实践平台。一般来说,学校公共机房基本上都是安装Windows系统,很少有专门安装Unix/Linux系统的机房。Linux是一套免费使用和自由传播的类Unix操作系统,Linux兼容绝大部分Unix标准,能够在个人计算机上实现全部的Unix特性,因此本课程实践中采用虚拟机软件VMware来构建虚拟的Linux操作系统实验平台,具体步骤如下[3]:选择硬件配置较高的计算机作为Linux操作系统实验平台的主机;在主机上安装VMware 虚拟机软件;可以从网上下载一个Linux安装镜像文件(.iso),然后利用VMware 虚拟机软件安装Linux操作系统,在安装过程中选择从已下载的镜像文件安装,其他就利用默认选项,直到Linux操作系统安装完毕;运行Linux虚拟操作系统,安装并设置好集成电路设计相关的EDA软件。至此,已经构建了一个能模拟实际工作环境的Linux操作系统实践平台。
3.强化案例教学,增强学生的时间能力
Unix操作系统实践课程的定位是在介绍Unix操作系统基本操作的基础上,通过学习C Shell脚本语言并进行程序设计,更好地运用Unix系统进行项目管理和开发工作,同时为后续的各门课程提供一个基础研究平台,是集成电路设计与集成系统专业的一门基础课。该课程具有很强的理论性和实践性,一方面需要学生学习Unix环境下常用命令以及C Shell编程的基本概念、设计方法,另一方面又须借助大量实践才能掌握这些知识。因此,采用传统的教师讲授教学模式往往会使学生丧失学习兴趣,也很难培养其实践应用能力。引入案例教学法,将知识融入案例之中,重视实践和工程经验,可以大大激发学生的学习兴趣,发挥其主动性和创造性,从而达到提高教学质量的目的。
二、Unix实践教学案例策划和案例设计
1.案例策划
以大规模数字集成电路设计为例,在用Verilog HDL语言编写好设计代码后需要进行大量的仿真。针对每一种可能的输入以及不同的参数都会有一个专门的测试文件(testbench)对编写好的代码进行仿真测试,仿真结束后对仿真结果(可能有文本记录文件或者波形文件)进行分析。每一个仿真所花费的时间可能不同,短的可能只需几分钟,长的可能需要几个小时,甚至几十个小时。一般来说企业里的工程师们上班一天只有8小时,那么如何充分利用晚上的时间来做仿真测试呢?通常的做法就是自己编写一个或一系列的C Shell脚本,让脚本自动运行仿真测试程序,当一个仿真结束后自动保存该仿真的结果,然后继续运行下一个仿真,直到全部仿真完成。这样就可以充分利用非上班时间来自动完成仿真,工程师们只需要在仿真完成后查看一下仿真结果是否正确,而不需要关心一个仿真什么时候结束,什么时候该启动下一个仿真,大大提高了工作效率。 2.案例设计
(1)设置教学案例仿真环境。在linux操作系统中,安装好仿真软件,需要仿真的相关设计文件均已准备好。仿真工具为“/home/user1/tools/bin/ncverilog”,需要仿真的设计文件已经列在“/home/user1/project/src/rtl_code.f”中,用于仿真验证的行为模型文件为“/home/user1/project/model/behv_model.v”,仿真使用的库文件为“/home/user1/project/lib/rtl_lib.v”,仿真测试文件有100个,存放在目录“/home/user1/project/testbench”下,每个文件对应一种测试条件,文件名分别为:“pat_1.v”,“pat_2.v”,…,“pat_30.v”,“clk_1.v”,“clk_2.v”,…,“clk_50.v”,“case_1.v”,“case_2.v”,…,“case_20.v”。所有仿真结束后都会生成两个结果文件,分别是一个仿真记录文件“ncverilog.log”和一个波形“test.fsdb”。当一个仿真结束时需要将结果文件移至目录“/home/user1/project/sim/result”下,并将其更名为与测试文件相同的名字,扩展名保持不变。
(2)编写C Shell脚本。根据仿真环境以及所选案例需要完成的任务功能,编写C Shell脚本,自动完成相应的工作。编好的C Shell脚本还需经过调试,确定脚本功能是否符合任务的要求。脚本具体内容如下:
#!/bin/csh
set TOOL = “/home/user1/tools/bin/ncverilog +access+rw ”
set SRC = “-f /home/user1/project/src/rtl_code.f”
set MODEL = “/home/user1/project/model/behv_model.v”
set LIB = “-v /home/user1/project/lib/rtl_lib.v”
set TESTBENCH_DIR = “/home/user1/project/testbench”
set RESULT_DIR = “/home/user1/project/sim/result”
#列出所有的测试文件名
set TEST_PATTERN = (pat_1 pat_2 … pat_30 clk_1 clk_2 … clk_50 case_1 case_2 … case_20)
echo “simulation start at `date` ” > run.log
foreach testname ($TEST_PATTERN)
echo “run simulation pattern: $testname ”
#启动一次仿真
$TOOL $ TESTBENCH_DIR /$testname.v $SRC $MODEL $LIB
#如果仿真出现错误,在ncverilog.log文件中会出现“Error”字符,并提示
set ERROR = `grep Error ncverilog.log`
if($ERROR == “”)then
echo “Pass! test_pattern: $testname ”>> run.log
else
echo “Error! Test_pattern: $testname ”>> run.log
endif
#保存仿真记录文件和波形文件
mv ncverilog.log $ RESULT_DIR/$testname.log
mv test.fsdb $ RESULT_DIR/$testname.fsdb
end
(3)脚本运行结果。运行编好的C Shell脚本,自动完成所需要的仿真,大大提高工作效率,可以清楚地发现某个仿真过程是否出现错误。当所有仿真都完成后,首先可以查看运行记录文件run.log文件,如:
simulation start at Sun May 4 14:42:07 CST 2014
Pass! test_pattern: pat_1
Pass! test_pattern: pat_2
Pass! test_pattern: pat_3
Error! test_pattern: pat_4
Pass! test_pattern: pat_5
...
从中可以发现第4个仿真pat_4出现错误。此外,还可以在结果目录(/result)下查看每一个仿真的记录文件“.log”和波形文件“.fsdb”,详细验证该仿真结果是否正确。
3.案例教学效果
在本案例的教学过程中,开始给出需要解决的问题之后,鼓励学生认真思考分析问题,并积极引导学生找出解决问题的方案,然后让学生运用所学的Unix基本操作以及C Shell编程等知识来完成本案例的任务。通过这种方式选择合适的教学案例就可以加深学生对Unix/Linux常用命令、C Shell语法(如:控制结构、循环结构)等内容的理解,让学生学会将所学知识融会贯通,更好地为解决实际问题服务。总之,在案例的选择上要选择实际工作中遇到的问题,不能凭空臆造案例,同时要充分考虑到学生的兴趣爱好,培养学生运用所学知识来分析并解决实际问题,提高学生的应用能力。[4]
三、结语
Unix/Linux操作系统的基本应用是集成电路设计从业人员必须具备的一项基本技能,而Unix操作系统实践课程的目标也是为了培养学生对Unix/Linux操作系统的基本应用能力。实践证明,通过改革教学方法、构建模拟实际工作环境的实践平台以及强化案例教学可以有效激发学生的学习兴趣,锻炼学生解决问题和实际应用能力,大大提高了教学效果。
参考文献:
[1]姜畅.案例教学在Unix Shell 编程课程中的应用[J].江苏教育学院学报(自然科学),2010,(4):1-3.
[2]薛迎霄,王禹.高校Linux 课程教学研究[J].广东技术师范学院学报,2004,(6):78-79.
[3]赵艳红,段汉根,沈峰.Linux操作系统实验教学研究[J].农业网络信息,2010,(8):145-147.
[4]谭琨,刘春.基于Linux实验教学提高IT专业应用型人才能力培养模式的研究与实践[J].中国科教创新导刊,2011,(26):48.
(责任编辑:王祝萍)