更全的杂志信息网

利用TCL实现用户约束文件的解析

更新时间:2016-07-05

1 引言

随着 FPGA(Field-Programmable Gate Array)的发展,对其工作频率和处理速度的要求越来越高。器件处理速度的提高意味着逻辑设计时对时钟信号方面的要求和处理也变得更严格,需要通过附加约束来控制逻辑的综合、映射、布局和布线,以减少逻辑和布线的传输延时,从而提高工作频率。因此,用户约束在电子设计自动化(Electronic Design Automation,EDA)工具使用中不可或缺,是自主研发EDA工具的重要组成部分。由于用户约束规则复杂繁多、灵活多变,如何简单、有效地实现约束文件的解析至关重要,本文提出一种采用TCL(Tool Command Language)语言来实现用户约束文件的解析方法。

TCL是一种基于字符串的解释型命令语言,是一种简明、高效、可移植性好的编程语言,具有可扩展、支持重用、简单易学等特点。TCL语言作为应用的粘合剂,能够无缝地将很多应用集成在一起,并且每一条TCL语句都可以理解成命令参数形式[1]。它适合与C集成,C程序调用TCL的解释器来运行脚本;C函数也可作为TCL过程。由于其功能强大且简单易学,故TCL常被用于快速原型开发、脚本编程、GUI(图形用户界面)、测试等[2]

2 TCL简介

TCL是一种解释执行的脚本语言,支持变量、循环、过程等使用的编程元素。其功能强大,基础结构和语法非常简单,与其他开发语言相比,TCL语言需要学习的知识少,编写的代码量也少,易于学习和掌握。TCL还是一种跨平台语言,适用于多个开发平台之间的代码移植,在Windows平台下开发的程序代码在多数情况下可以直接移植到Linux平台下。另外,TCL和它的大多数扩展都是免费开源软件,在互联网上很容易下载到,极大地方便了开发者的使用[3]

通过制作岗位标准作业流程图和体系融合表,更直观的反映岗位大练兵标准流程步骤,帮助队员理解练兵过程中的安全要求,以便能充分应用流程理论,实现练兵标准化。

TCL主要包含两部分:脚本语言和为之而设计的解释器。TCL语言命令的基本语法如式(1)所示,其中Command代表内置的命令名称或TCL进程,arg1、arg2、arg3等代表命令的参数,参数与命令或参数之间用空格符分开,参数都是字符串,通过回车换行或者分号来结束一条命令[4]

TCL解释器是一个C语言函数库,它提供了丰富的C语言调用接口,可以很容易地嵌入至C语言的程序中,从而实现在C应用程序中执行TCL的命令或脚本,具体流程如图1所示[5]。此外,TCL提供了丰富的功能扩展函数,允许用户编写新的命令解释程序,加入TCL的解释器中。

{-add Flag }

图1 TCL执行流程

3 设计实现

由于用户约束规则复杂、多变,为达到设计的简洁性、灵活性、可扩展性,采用C与TCL交互的方式实现。在TCL文件中,首先根据用户约束规则声明所有的约束规则,然后定义该约束的解析规则,最后读取用户约束文件并根据解析规则进行逐行解析。TCL解析结果通过调用命令处理过程反馈给C应用程序,进而应用至布局、布线等流程,按照用户约束设计实现FPGA的整个设计流程,如图2所示。

图2 设计流程

在TCL代码中实现约束文件的解析主要分为声明约束规则、定义解析规则、解析用户约束,下面分模块进行阐述。

最小平方法是在约束条件下,对判断矩阵A=(aij)n×n用函数的极小化解Pθ=(P1,P2,…,Pn)T作为排序权向量,无需进行一致性检验。方法如下:

3.1 声明约束规则

以创建时钟为例,其用户约束语句一般如下所示:

其中declare为关键字,是自定义的TCL处理过程,在该过程中获取声明的约束名、约束参数、约束条件,并定义该约束应执行的解析处理过程,执行流程如图3所示。

图3 declare处理流程

用户约束规则复杂繁多,为了便于后续的扩展和移植,首先根据约束规则声明该规则,当约束规则更改或添加新的约束规则时只需要修改或添加声明即可,非常简洁方便。声明约束规则的格式如式(2)所示:

{port_pin_listList }

根据其规则,声明的约束规则如下所示:

在分析过程中,针对各铝股截面间涉及大量接触问题,各铝股间采用通用接触,由程序检测接触行为并确定接触对,提高计算效率。为使计算结果收敛,采用显示动力学求解器进行计算。

declarecreate_clock{

{-period Float{$par>=0} }

{-name String }

1.2.2 评价方法实验组在取活检时损伤性血性分泌物流入指套,未发生喷溅现象。对照组常规检查取活检时损伤性血性分泌物从活检口喷出溅到患者或医务人员身上,容易发生职业暴露。

}{param(-period)&& (param(-name)||param(port_pin_list))}

create_clock-period 100-name clk[get_ports PCLK]

2012年前后,杭州市政府大力探索智慧城市建设,区域医疗信息化建设推进迅速,希望实现医疗机构互联互通,达成“智慧医疗”概念。最终,市民卡成为患者进入杭州医疗服务体系的一个“公共载体”。这些网络基础设施建设,为医院一系列后续流程变革创造了条件。

{-waveform List{type_Float{length($length>=2&&($length%2)==0)}}}

各字段的解释如表1所示。

表1 约束规则说明

字段 说明declare 关键字,自定义TCL处理过程create_clock 约束名称{{-period Float {$par>=0}}{-name String }{-waveformList {type_Float{length($length>=2&&($length%2)==0)}}}{port_pin_listList }{-add Flag}}约束参数定义,其格式采用"{关键字值类型值约束}",值约束为可选项如:-period关键字Float值类型{$par>=0}值约束条件{param(-period)&&(param (-name) || param(port_pin_list))}约束条件,定义某个字段是否必须存在,格式为:param(字段名)param(-period)-period必须存在(param (-name) || param(port_pin_list))-name或port_pin_list必须存在

3.2 定义解析规则

根据已声明的约束规则,定义相应的解析规则,当解析用户约束文件时,根据该规则逐条进行解析。首先获取用户约束语句中的约束名称与参数,并根据该约束名称查找已声明的约束规则;然后逐个遍历参数,获取其参数名与参数值,并根据值类型、值约束条件校验该参数值是否合法,若合法则保存该参数名与参数值键值对;当遍历完所有参数,根据声明的约束条件校验整条语句是否合法,若合法则调用回调函数将结果返回至C程序。整个处理流程如图4所示。

3.3 解析用户约束

采用TCL打开用户约束文件并逐行读取约束语句,根据定义的解析规则解析该约束语句,并将解析结果通过调用命令处理过程返回至C程序中,进而应用至布局、布线等流程。其流程如图5所示。

何东盯着那四十多岁微胖的女办事员熟练地将相片贴在结婚证上,又让他们俩签字。女办事员拿起权筝签过字的结婚证放进钢印机,看了一眼他们俩说:这可马上就是合法夫妻了……边说钢印就盖了上去。女办事员把盖完章的结婚证放到权筝面前,又把何东签过字的结婚证放进钢印机,这时何东突然喊道:“等一下!”说着便从钢印机下抽出自己的结婚证扭头跟权筝说:“我不想登记了!”

图4 定义解析规则

图5 解析用户约束

4 测试结果

本文所述的用户约束文件解析方法已应用至自主研发的EDA工具中。例如:图6为用户约束文件,图7、图8为解析结果在GUI中的显示,通过对比发现,解析结果全部正确。

图6 用户约束文件

图7 GUI显示解析结果(创建时钟)

图8 GUI显示解析结果(位置约束)

5 结论

利用TCL实现用户约束文件的解析,首先声明约束规则,然后定义解析规则,非常适用于规则繁多、复杂多变的文件解析,当约束规则更改或者添加新的约束规则时只需要修改或添加相应的声明、解析规则即可,非常灵活方便,具有很强的可扩展性与可移植性,便于后期的维护工作。

命题人故意混淆已然与未然,即有意在时间上对选项内容作了提前或滞后,即把未发生的事情(“未然”)判断为已发生的(“已然”),或把已发生的事实判断为未发生的,从而来迷惑答题者。如《中职毕业升学考试语文复习指导》(广东省语言音像电子出版社,2016年1月第6版)中第106页《漫光的实验》第6小题的C项“目前以漫光为基础的应用已经变为了现实”,与该文的首段“需要采取简单一些的方法”和尾段“已经考虑运用”等说法相冲突。

参考文献:

[1]赵丽.基于TCL脚本的自动化测试工具的研究与实现[J].信息化研究,2009,35(11).

[2]陆天宇,孔啸.基于TCL语言的CAE流程自动化系统设计[J].制造业自动化,2012,01(上):3-7.

[3]马飞,刘琦,尹娜,包斌.Tcl/Tk语言FPGA逻辑IP库实现方法研究[J].电子测量技术,2014,37(1).

[4]John K,Ousterhout Ken Jones.Tcl/Tk入门经典[M].第2版.北京:清华大学出版社,2010.

[5]杨怡玲,王换招,管旭东.利用Tcl/Tk实现X Windows下的GUI[J].微电子学与计算机,1999,1.

[6]李杰.IP核验收平台搭建与图形用户界面开发[D].哈尔滨:哈尔滨工业大学,2015.

李卿,惠锋,董志丹
《电子与封装》 2018年第05期
《电子与封装》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号