CN101055523A - 将软件程序代码断言转换为硬件描述语言程序代码的方法 - Google Patents

将软件程序代码断言转换为硬件描述语言程序代码的方法 Download PDF

Info

Publication number
CN101055523A
CN101055523A CNA2007101010439A CN200710101043A CN101055523A CN 101055523 A CN101055523 A CN 101055523A CN A2007101010439 A CNA2007101010439 A CN A2007101010439A CN 200710101043 A CN200710101043 A CN 200710101043A CN 101055523 A CN101055523 A CN 101055523A
Authority
CN
China
Prior art keywords
hardware
source file
program
software
software program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007101010439A
Other languages
English (en)
Inventor
余大伟
张征
陈琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN101055523A publication Critical patent/CN101055523A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种将软件程序语言来源文件中的断言转换到硬件描述语言来源文件中的系统及方法,在本发明方法一开始,第一来源文件具有以软件程序语言写成的软件程序代码,第二来源文件具有从第一来源文件中的软件程序代码转译而来的硬件描述语言程序代码,但不包含由第一来源文件中的程序代码转译过来的断言,本发明的方法包含:从第一来源文件中读取软件程序断言;定位第二来源文件中第二区块的位置,其中第二区块对应第一来源文件中包含软件程序断言的第一区块;转换软件程序断言为以硬件描述语言写成的硬件程序断言;判断硬件程序代码文件中插入程序断言的第二区块的位置;以及在该位置插入硬件程序断言。

Description

将软件程序代码断言转换为硬件描述语言程序代码的方法
技术领域
本发明有关于一种用来设计数字化集成电路(integrated circuits,IC)的软件工具,特别是有关于一种使用硬件描述语言(hardware description language,HDL)断言(assertion)的工具。
背景技术
传统上集成电路设计包含数个阶段,每个阶段都需要使用不同的工具或工具组,一般集成电路设计者会使用数种程序语言之一来撰写程序代码,在撰写程序代码流程的同时会进行模拟,设计者会执行模拟工具输入程序编码以测试设计结果,当模拟过程出现问题,测试者对程序代码编辑以修复问题并再度进行模拟,在模拟后设计者会使用合成器将程序编码转译为集成电路的逻辑表示,接着使用其他集成电路工具将逻辑表示转化成实体集成电路,成为可编程逻辑门阵列(Field Programmalbe Gate Array,FPGA)、专用集成电路(Application-Specific Integrated Circuit,ASIC)、或其他订制硅集成电路。
集成电路设计者可以使用数种类别的程序语言进行设计,其中有一种语言集合被称为硬件描述语言(Hardware Description languages,HDL),亦被称为寄存器传输语言(Register Transfer Languages,RTL),一般所知的寄存器传输语言包含Verilog与VHDL,寄存器传输语言被认为是低阶程序语言,因为其描述的是特殊硬件特征如时序或是平行度,其他可供集成电路设计用的程序语言包含C、C++、或其他类似的语言,这类语言传统上比较常用来开发软件而非硬件,这些软件语言可以让设计者以较高阶的概念撰写程序代码,因此通常会增加设计者的工作效率。
一般C/C++与硬件描述语言程序代码都包含断言,用以确认程序编码能准确实行预期的设计,一段断言为用来表示一个特定的设计特征应该或不应该如何运转的宣告,举例来说,一个特定区块的程序代码可能会假设两批输出中一次只有一批是有作用的,再举例来说,一个区块可能会假设每一批输入的值都不会大于一个特定的最大值,这些假设可以由设计者表示为断言来实现。
因为大部分的模拟及合成工具都使用硬件描述语言来输入,而不是C/C++,使用C/C++撰写程序代码的设计者要将程序代码转译为硬件描述语言,转译过程可能是人工转译、自动转译、或两种方式的结合,然而,并非所有转译工具都能将C++断言转译为适当的硬件描述语言断言,因此,亟需提出一种能转译软件程序代码为硬件描述语言的工具,以克服传统技术的缺欠。
发明内容
有鉴于上述传统技术的诸多缺欠,本发明的目的在于提出一种能转译软件程序代码的断言为硬件描述语言的系统与方法,在本发明的一方法中,一第一来源文件包含以软件程序语言写成的源程序代码,会被转译为包含硬件描述语言源程序代码的第二来源文件。第二来源文件会执行由第一来源文件程序代码转译过来的断言,这个方法包含:由第一来源文件读取软件程序代码断言;定位第二来源文件中的一第二区块,其中第二区块对应到第一来源文件中的具有软件程序代码断言的第一区块;转译软件程序代码断言为以硬件描述语言表示的硬件程序断言;决定第二区块中的一个位置以插入硬件程序断言;以及将硬件程序断言插入第二来源文件中被决定的位置。
对本领域普通技术人员而言,其他未包含在本发明下述所公开的内容与附图中的系统、方法、特征或好处为显而易见的,因此凡其他未脱离发明所揭示的精神下所完成的等效改变或修改,均应包含在所述的权利要求范围内。
附图说明
图1显示使用本发明的方法转换软件程序代码断言为硬件描述语言程序代码的整体数据流区块示意图。
图2A显示软件程序代码与硬件程序代码阶层结构与两者间对应关系的区块层级示意图。
图2B显示软件程序代码与硬件程序代码文件如何表示图2A中的阶层结构的示意图。
图3显示软件程序代码与硬件程序代码中另一种阶层结构的示意图。
图4显示一软件程序代码函数以及对应的硬件程序代码模块示意图。
图5显示使用本发明所公开的方法转换如图4所示的软件程序代码函数中的断言的硬件程序代码模块的示意图。
图6显示本发明所公开的方法如何对应C/C++形式的断言于硬件描述语言形式的示意图。
图7显示本发明的一实施例中可转换软件程序断言为硬件描述语言程序代码的系统的区块示意图。
图8显示本发明的一实施例中可转换软件程序断言为硬件描述语言程序代码方法的流程图。
图9显示用以实施本发明的转换软件程序断言为硬件描述语言程序代码方法的通用计算机的硬件区块示意图。
主要元件符号说明
110     软件程序代码
120     转译工具
130     硬件程序代码
140     断言转换工具
150     包含硬件断言的硬件程序代码
160     硬件描述语言模拟器
210S    函数main
210H    模块top
220S    类别S_MUX
220H    模块H_MUX
230S    类别S_CTR
230H    模块H_CTR
240S    类别S_ENC
240H    模块H_ENC
310     函数区块
320     模块区块
330     序列区块
340     流程区块
350S    软件控制区块
350H    硬件控制区块
410S    软件函数
410H    硬件模块
420S    第一控制区块
420H    第一控制区块
430S    第二控制区块
430H    第二控制区块
440     流程区块
450     断言
510     硬件断言
610     C/C++(软件)断言
620     布尔代数
630     输出字串
640     严重程度
650     Verilog语言(硬件)断言
660     属性定义
670     ASSERT宣告
680     布尔代数
690     $FATAL(严重程度)宣告
695     输出字串
710     读取逻辑
720     第一定位逻辑
725     软件指示码
727     软件区块
730     第二定位逻辑
735     硬件指示码
737     硬件区块
740     转译逻辑
750     第三定位逻辑
760     插入逻辑
800     可转换软件断言为硬件描述语言程序代码方法
810    从软件来源文件中读取包含软件断言的函数或类别
820    决定软件断言与组成函数或类别的各种区块的相对位置
830    读取相对于函数或类别的硬件模块
840    转换软件断言到硬件断言
850    判断硬件断言在硬件程序代码文件中的插入位置
860    在插入位置插入硬件断言
900    计算机系统
910    处理器
920    网络接口
930    存储器
940    非易失性存储装置
950    总线
具体实施方式
本发明的一些实施例会详细描述如下。然而,除了详细描述外,本发明还可以广泛地在其他的实施例施行,且本发明的范围不受限定,其以所提出的权利要求范围为准。再者,在本说明书中,各元件的不同部分并没有依照尺寸绘图。某些尺度与其他相关尺度相比已经被夸张,以提供更清楚的描述和本发明的理解。
本发明公开一种将软件程序代码断言转换为硬件描述语言程序代码的方法,包含:将软件程序代码与经由软件程序代码转译而来的硬件描述语言程序代码一起检视;转译被检视的软件程序代码中的软件程序代码断言为硬件描述语言程序代码断言;以及将硬件描述语言程序代码断言插入硬件程序代码中。
图1显示使用本发明的方法转换软件程序代码断言为硬件描述语言程序代码的整体数据流区块示意图,本发明的方法使用两组输入文件,两组输入文件通常被配置在不同的子目录中,其中一组输入文件包含软件程序代码110,软件程序代码110为使用软件程序语言如C或C++写成的程序代码,这些输入文件还包含用相同软件程序语言写成的断言,软件程序代码110会被输入转译工具120以将软件程序代码转译为硬件描述语言如VHDL或Verilog,由此转译工具120转译产生硬件程序代码130,硬件程序代码130为另一组输入文件,用来输入断言转换工具140。
上述中重要的是,被转译的硬件程序代码130并不包含由软件程序语言转译成硬件描述语言的断言,然而,其仍然包含对应的其他断言,这些断言由转译工具120产生或是在转译过程后由人工加入。
两组输入文件都会输入断言转换工具140处理,其中会由计算机程序执行本发明的方法以转换软件程序代码断言为硬件描述语言程序代码,由此断言转换工具140产生包含原始硬件描述语言程序代码与由软件程序语言转译为硬件程序代码的断言的含硬件断言的硬件程序代码150,本发明的方法读取软件程序代码110中的软件程序语言断言,并将其转译为硬件描述语言断言,最后将硬件描述语言断言放入被转译的硬件程序代码130中的适当位置,于是产生含硬件断言的硬件程序代码150,之后含硬件断言的硬件程序代码150可以被输入硬件描述语言模拟器160进行模拟验证。
如软件开发领域的普通技术人员所能了解的,本发明的断言转换工具140可以由多种程序语言加以编码及编译执行实现,因此本发明并不限定其所使用的程序语言,编码时可使用的程序语言包含perl、awk、shell script、VBscript或其他程序语言,编译可使用的程序语言包含C、C++、C#、JAVA、Visual Basic或其他程序语言。
虽然软件程序代码110被包含在多个文件中,然而其整体可视为形成单一软件实体的阶层结构,相同的硬件程序代码130也被包含在多个文件中,但一样可以视为单一硬件实体的阶层结构,在Verilog语言中这些实体被称为模块(module),而在C语言中则称为函数(function),在C++语言中则是被称为类别(class),其中类别又包含函数。
图2A与图2B显示两种阶层结构与其对应关系,以不同观点绘成的示意图,图2A为阶层结构的区块层级示意图,在阶层结构最上端是单一的顶端实体210,在C/C++语言的阶层结构中顶端实体210S为被称为main的函数,在Verilog语言阶层结构中的顶端实体210H为被称为top的模块,因此硬件程序代码130具有对应于软件程序语言阶层结构的顶端实体210S的硬件程序语言顶端实体210H。
在一特定阶层的一个实体可以建立或提出位于其他较低阶层的实体,如图2A所示的范例,类别220S“S_MUX”与230S“S_CTR”为中阶层软件实体,由顶端实体210S“main”所提出,同样的模块220H“H_MUX”与230H”H_CTR”为中阶层硬件实体,由顶端实体210H“top”所提出,更下层的底层软件实体类别240S“S_ENC”一样被中阶层实体类别220S“S_MUX”所提出,而底层硬件实体模块240H“H_ENC”则是被中阶层实体模块220H“H_MUX”所提出。
上述中重要的是硬件程序模块220H的名称”H_MUX”可推导自软件类别220S的名称”S_MUX”,由于将C/C++软件程序代码110转译为Verilog硬件程序代码130的转译流程,不论为自动转译或人工转译都会遵循预先定义好的命名方法,当将软件程序断言转译为硬件描述语言程序代码时,本发明所公开的方法会检视构成软件程序代码110的输入文件以找出其中的软件程序代码阶层结构,并检视构成硬件程序代码130的输入文件以找出硬件程序代码阶层结构,使用预先定义好的命名方法有助于让本发明的方法发现两者间的对应关系。
图2B显示软件程序代码110与硬件程序代码130文件如何表示图2A中的阶层结构的示意图,函数210S“main”提出类别220S“S_MUX”,而类别220S“S_MUX”提出类别240S“S_ENC”,在对应的硬件阶层结构中,模块210H“top”提出模块220H“H_MUX”,而模块220H“H_MUX”提出模块240H“H_ENC”。
在图2B所示的实施例中,每个类别与独立函数(如”main”)都位于分开的文件中,同样的每个模块也都在分开的文件中,因此特定模块的文件名称可以被推导自对应类别或函数的文件名称,如h_mux.v推导自h_mux.cpp,因此如果有一具有特定软件类别的特定文件,将软件程序代码断言转译成硬件描述语言程序代码的方法可以很容易的找到对应该特定软件类别的硬件程序模块以及硬件文件,在本发明的另一实施例中,一个文件会包含多个类别或模块,在这种情况下,将软件程序代码断言转译成硬件描述语言程序代码的方法会从软件类别名称推导出硬件程序模块名称,再搜寻包含硬件程序代码130的文件中具有硬件程序模块名称的来源文件。
图3显示软件程序代码110与硬件程序代码130中另一种阶层结构的示意图:其中软件实体与硬件实体都由区块所组成,其中软件实体与硬件实体在最顶层的地方都包含一个单一的顶层区块,而软件类别中的每个函数都包含一个单一顶层函数区块310,同样的每个硬件程序模块中都有一个顶层模块区块320。
每个函数区块310与模块区块320都包含一个或多个序列区块330,一个硬件程序模块还会包含流程区块340,流程区块340有别于其他区块并没有类似的软件类别。
序列区块330中的宣告被依序执行,控制区块350则被用来控制序列,虽然不同程序语言的文法不同,但是大多数软件或硬件程序语言都包含条件控制区块(如IF判断)和重复执行控制区块(如FOR、WHILE陈述),在图3中,区块350S为C/C++软件程序语言条件区块(IF),而对应的区块350H为Verilog硬件程序语言条件区块(IF-THEN-ELSE)。
如上所述,将软件程序代码断言转译成硬件描述语言程序代码的方法会转译断言并放入硬件程序代码130中适当的位置,本方法会使用在图3的连接关系中的区块来判断插入硬件描述语言断言的适当位置,尤其是硬件程序代码130中适当的插入位置被特定为符合与软件程序代码110中的区块相关的规则。
举例来说,如果有一软件程序代码断言被辨识出位于软件程序代码110内的区块X和区块Y之间,则硬件描述语言断言位置可能在硬件程序代码130中对应的区块X’和区块Y’之间,转译硬件描述语言技术领域的普通技术人员应能看出转译得到的硬件描述语言程序代码会和被转译软件程序代码中有很大差异,因此在本例中,硬件描述语言断言的适当位置也有可能在区块X’和区块Y’之后,或是在区块X’和区块Y’之中,插入断言的适当位置视软件程序代码110与硬件程序代码130的结构而定。
图4显示一范例软件程序代码110中的软件程序函数410S,以及对应的硬件程序代码130中的硬件程序模块410H的示意图。软件程序函数410S包含两个控制区块”IF read”420S和”IF write”430S,而在对应的硬件程序模块410H中包含对应的控制区块420H与430H,这两个控制区块位于流程区块440中,该流程区块440在软件程序函数410S没有对应的部份。
软件程序函数410S包含一断言450”ASSERT(!(read & m_empty))”,断言450位于第一控制区块420S之前,如图4所示,硬件程序代码130并不包含由软件程序断言450转译而成的硬件程序代码断言。
图5显示如图4所示的硬件程序代码模块410H中的具有软件程序函数410S中的断言450转译而来的硬件程序断言510的示意图,转译方法将硬件程序断言510插入于模块410H中第一控制区块420H之前,以对应软件程序断言450位于函数410S中第一控制区块420S之前,如之前所述,在其他情况下硬件程序断言510可能被插入在控制区块420H中,或是在控制区块420H之后,其适当位置视软件程序代码110与硬件程序代码130的结构而定。
图5所示的范例较为单纯,其中只有两个序列区块,而断言位于第一序列区块中,更复杂的范例会包含结合多层的序列与控制区块,然而如前所述,软件工具可将软件程序代码区块对应到硬件描述语言区块,因此转译软件程序代码为硬件描述语言领域的普通技术人员应能知道如何判断硬件描述语言程序代码中的插入硬件程序断言的适当位置。
图5显示当将软件程序断言转译为硬件描述语言时,硬件程序断言被放置在硬件程序模块中的位置,图6显示本发明所公开的方法如何对应C/C++断言形式到硬件描述语言形式,如前述所解释,一个断言用来表示一个预期会有效的情形,一个典型的软件程序断言610会以有三个参数的预处理器巨集指令的方式执行,三个参数为:预期保持真值的布尔代数620、输出字串630,当布尔代数非真值时则显示输出字串630、以及严重程度640,如果符号非真值时由严重程度来判断是否要中断执行程序代码。
在图6的范例中,软件程序断言610预期先进先出读取变数与空旗标变数不会都是真值,如果两个变数都是真值,则布尔代数620在执行时不会计算为真值,这时描述字串630”S_FIFO::Access underflow”就会显示,因为严重程度640为CRITICAL,所以程序代码会中止执行,中止可能为进入除错模式或离开程序,视ASSERT巨集指令的内容而定。
本发明所公开的断言转译方法会将软件程序断言610转译为Verilog语言断言650,图6的范例中使用的Verilog语言版本为System Verilog withAssertions(SVA),SVA包含断言的语言构想,其中一种构想为属性(property),软件程序代码与硬件程序代码有一点很重要的差异为硬件程序代码会被定时,软件可以在执行时简单的测试变数值来决定布尔代数是否为真值,但是在硬件的变数为信号,测试时需要参照时脉。
因此,本发明所公开的转译方法将Verilog断言以两个部份实现:属性定义660,使断言能参照时脉;以及ASSERT宣告670。属性定义660定义了Verilog语言命名的属性,在本范例中属性具有一般名称”fifol”,属性定义660包含一ALWAYS区块,该区块包含一定时装置,并且区块中布尔代数680被预期为真值。
ASSERT宣告670接着属性定义660之后,其中预期为真值的条件变数为上述被定义的命名属性,属性定义这时包含布尔代数680,如果命名属性不是真值,则ASSERT宣告670包含Verilog $FATAL宣告690和输出字串695,$FATAL宣告690会显示输出字串695并以错误码中断模拟进行。
$FATAL宣告的使用可以视为对应软件程序断言610中严重程度的CRITICAL,而软件程序断言中的严重程度NORMAL则会对应到硬件程序断言的Verilog $ERROR或$WARNING宣告,这些宣告一样会显示输出字串但不会中断模拟。
另一种形式的软件程序断言则使用SWITCH或CASE控制宣告而不包含布尔代数,取而代的的以断言在控制宣告中的位置作为布尔代数使用,下列为这种软件程序断言的程序代码范例:
switch(access_type)
  case Read:
     ;more code
  case Write:
    ;more code
  default:
    ASSERT(0,“invalid value for access_type”,NORMAL);
在这段程序代码中,在default之后的断言只会在access_type并不等于Read或Write时才执行,因此就等于布尔条件式:
((access_type!=Read)&&access_type!=Write))
因为布尔条件式被隐含于断言在SWITCH/CASE控制区块内的位置中,所以不需要包含布尔代数以作为ASSERT巨集指令的变数,这种特定形式的软件程序断言能有效的对应为SystemVerilog属性宣告支援的$INSET运算子,以下为对应上列程序代码的SystemVerilog断言:
property invalid_access_type;
     @(posedge clk)not($inset(access_type,`Read,`Write))
endproperty
assert property(invalid_access_type)
else $error(″H_FIFO:invalid access type!”)
图7显示本发明的一实施例中如图1至图6所述的转换软件程序断言为硬件描述语言程序代码的系统的区块示意图,读取逻辑710自软件来源文件110读取软件程序断言450,同时判断软件程序断言450位于软件来源文件110的哪个软件模块410S中,第一定位逻辑720会判断软件程序断言450与关联的一或多个控制区块的位置,如图4的控制区块420S和430S,在本发明的一实施例中,在软件区块的位置由第一定位逻辑720以区块内程序代码的观点来获得,因为程序代码指出了软件区块的位置,因此可视这个位置的区块包含一软件指示码725,第一定位逻辑720会维持或设定包含软件程序断言450与软件指示码725的软件区块727。
第二定位逻辑730搜寻硬件来源文件150以找出对应于软件区块420S的硬件区块420H,在本发明的一实施例中,硬件区块的位置为以该区块内的硬件程序代码的观点来找出,也就是包含硬件指示码735,因此硬件指示码735对应于软件指示码725,第二定位逻辑730会维持或设定包含硬件指示码735的硬件区块737。
转译逻辑740将软件程序断言450转译为硬件程序断言510,第三定位逻辑750则利用硬件指示码735以找出硬件描述语言来源文件130中插入硬件程序断言510的位置,插入逻辑760将硬件程序断言510插入第三定位逻辑750决定的位置,最后系统输出包含硬件程序断言的硬件来源文件150。
图8显示本发明的一实施例中转换软件程序断言为硬件描述语言程序代码方法800的流程图,其中步骤810为从软件来源文件中读取包含软件程序断言的函数或类别,接下来步骤820,决定软件程序断言与组成函数或类别的各种区块的相对位置,步骤830为读取相对于函数或类别的硬件程序模块,步骤840转换软件程序断言到硬件程序断言,之后步骤850与860为判断硬件程序断言的插入位置与在该位置插入硬件程序断言。
硬件程序断言插入位置可能在硬件程序模块内或模块外部,其中模块内部的断言称为行内断言(inline assertions),在这种情况下,插入的位置会与模块内的区块有关,并且基于软件程序断言在软件模块或函数内的位置来判定,然而由于软件程序函数形式与硬件程序模块形式会在转换时产生差异,程序转译领域普通技术人员应能了解本发明的方法能容许这种情形而找出插入位置。
上述中任何流程步骤或流程图内的区块应能理解为以包含一个或多个可执行指令的模块、段落、或部份程序代码表示,藉以执行流程中的逻辑函数或步骤,如软件开发领域普通技术人员应能了解,在本发明所公开的范围中能有其他替代的实现方式,在这些实现方式中,函数可能不是按上述公开的顺序执行,其可能视函数功能而采用同步执行或相反顺序执行。
图9显示用以实施本发明的转换软件程序断言为硬件描述语言程序代码的方法700的通用计算机900的硬件区块示意图,计算机系统900包含许多广为人知的元件,如处理器910、网络接口920、存储器930、以及非易失性存储装置940,其中非易失性存储装置940可以是硬盘、快闪随机存储器(flashRAM)、快闪只读存储器(flash ROM)、电子抹除式只读存储器(EEPROM)或其他类似功能的存储装置,这些元件通过总线950连接起来,在存储器930中包含指令集,指令集由处理器910所执行并实施本发明的转换软件程序断言为硬件描述语言程序代码的方法,在图9中省略了许多传统的因素,这些因素为普通技术人员所知因此不需要对计算机系统900的作业解释太多。
本发明的转换软件程序断言为硬件描述语言程序代码的方法和系统可以以软件方式实施、硬件方式、或是两者的结合,在本发明的部分实施例中,系统或方法由存放在存储器中的软件所实施,该软件由适合的计算装置中的微处理器所执行,然而,本发明的方法与系统亦能植入任何给指令执行系统或装置使用或与的连接的计算机可读取媒体,这样的指令执行系统包含任何计算装置、包含处理器的系统、或是其他可存取或执行指令执行系统的指令集的系统,在上述所公开的内容中,计算机可读取媒体可以是任何可包容、存放、通信、传播或输送程序以供执行指令执行系统所用或与的连接的装置,举例来说,计算机可读取媒体可以是基于电子、磁性、光学、电磁、红外线、或半导体技术的系统或传播媒体,而不限于此。
使用电子技术的计算机可读取媒体包含:具有一或多条线路的电连接或电子装置、随机存取存储器(RAM)、只读存储器(ROM)、抹除式可编程只读存储器(EPROM或闪速存储器),使用磁性技术的计算机可读取媒体包含可携带式计算机磁片,使用光学技术的计算机可读取媒体包含:光纤或可携带式光学盘片(CD-ROM或其他格式的光盘),以上所述为示范所用而本发明不限于此。计算机可读取媒体甚至可能包含纸张或其他可印出计算机程序的媒体,使用这种媒体时,程序可以使用电子技术自媒体上获得、解读、编译或其他适当的处理方式,如光学扫描,之后将成是存放于计算机存储器中,另外在本发明实施例的范围中,本发明还包含将实施例的功能植入硬件中的逻辑元件或是软件设定媒体。
综上所述,虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明。任何所属技术领域中的普通技术人员,在不脱离本发明的精神和范围的情况下,可进行各种更动与修改。因此,本发明的保护范围以所提出的权利要求的范围为准。

Claims (17)

1.一种转换一软件程序语言来源文件中的断言到硬件描述语言来源文件中的转换方法,包含:
从一第一来源文件内的软件程序语言程序代码中读取一软件程序断言,其中该软件程序断言位于一第一区块中;
定位一第二区块的位置,其中该第二区块对应该第一区块,且位于一包含硬件描述语言来源程序代码的第二来源文件内,该第二来源文件内的程序代码为转译该第一来源文件而来,其中不包含由该软件程序断言转译而来的一硬件程序断言;
转换该软件程序断言为以硬件描述语言写成的一硬件程序断言;
判断该第二区块内的一插入位置以插入该硬件程序断言;以及
在该插入位置插入该硬件程序断言。
2.如权利要求1所述的转换方法,其中上述的第一来源文件包含最少一顶端软件实体,而该第二来源文件包含最少一顶端硬件实体,其中每一实体包含最少一区块,该转换方法还包含:
判断该软件程序断言位于哪一个该顶端软件实体中;
判断该软件程序断言与包含该软件程序断言的该顶端软件实体内其他区块的一相对位置;
判断哪一该顶端硬件实体对应于包含该软件程序断言的该顶端软件实体;以及
基于该相对位置判断在对应的该顶端硬件实体内用以插入该硬件程序断言的该插入位置。
3.如权利要求1所述的转换方法,还包含:
定位该第一区块内的该软件程序断言的位置,该第一区块位于该第一来源文件内的该顶端软件实体中;以及
判断包含对应该顶端软件实体的该顶端硬件实体的该第二来源文件的文件名称。
4.如权利要求3所述的转换方法,其中该顶端软件实体为一软件程序语言函数,该顶端硬件实体为一硬件描述语言模块。
5.如权利要求4所述的转换方法,其中该函数与该模块都包含最少一区块,该转换方法还包含:
判断该软件程序断言相对于在同一函数内的其他区块的一软件程序断言位置;
判断该顶端硬件实体内的多个区块的多个区块位置;
判断一插入位置,该插入位置与在同一模块内的该多个区块的相对位置关系对应于该软件程序断言位置;以及
插入该硬件程序断言于该插入位置。
6.如权利要求1所述的转换方法,还包含:
读取一第一组来源文件,该第一组来源文件包含多个以软件程序语言写成的来源文件,其中还包含该第一来源文件;
建立一第一阶层结构用以表示该第一组来源文件内的程序代码文件阶层结构;以及
判断一第二组来源文件内的该第二来源文件,该第二组来源文件由该第一组来源文件转译而来,其中该第二来源文件在该第二组来源文件的阶层结构位置对应于该第一来源文件在该第一阶层结构的位置。
7.如权利要求1所述的转换方法,其中上述的软件程序断言包含一布尔代数与一输出字串,而上述的硬件程序断言包含一属性定义。
8.一种转换一第一来源文件中的最少一断言到一第二来源文件中的转换系统,其中该第一来源文件包含用软件程序语言写成的来源码,该第二来源文件包含硬件描述语言来源码,该转换系统包含:
一读取逻辑,用以自该第一来源文件读取一软件程序断言;
一第一定位逻辑,设定一第一区块,该第一区块包含该第一来源文件内的该软件程序断言与最少一软件位置指示码,该第一定位逻辑用以判断该软件程序断言的一相对位置,该相对位置于该第一区块内并与该软件位置指示码相关;
一第二定位逻辑,设定一第二区块,该第二区块位于该第二来源文件内并对应于该第一区块,该第二定位逻辑搜寻该第二来源文件内的最少一硬件位置指示码,该硬件位置指示码对应于该软件位置指示码;
一转译逻辑,用以转译该软件程序断言为一硬件程序断言;
一第三定位逻辑,用以判断该第二来源文件内的一插入位置,该插入位置与该第二区块内的该最少一硬件位置指示码相关;以及
一插入逻辑用以插入该硬件程序断言至该插入位置。
9.如权利要求8所述的转换系统,其中上述的第一来源文件包含最少一顶端软件实体,而该第二来源文件包含最少一顶端硬件实体,其中每一实体包含最少一区块,该转换系统还包含:
一逻辑元件用以判断该软件程序断言位于哪一个该顶端软件实体中;
一逻辑元件用以判断该软件程序断言与包含该软件程序断言的该顶端软件实体内其他区块的一相对位置;
一逻辑元件用以判断哪一该顶端硬件实体对应于包含该软件程序断言的该顶端软件实体;以及
一逻辑元件基于该相对位置判断在对应的该顶端硬件实体内用以插入该硬件程序断言的该插入位置。
10.如权利要求8所述的转换系统,还包含:
一逻辑元件用以定位该第一区块内的该软件程序断言的位置,该第一区块位于该第一来源文件内的该顶端软件实体中;以及
一逻辑元件用以判断包含对应该顶端软件实体的该顶端硬件实体的该第二来源文件的文件名称。
11.如权利要求10所述的转换系统,其中该顶端软件实体为一软件程序语言函数,该顶端硬件实体为一硬件描述语言模块。
12.如权利要求11所述的转换系统,其中该顶端软件实体与该顶端硬件实体包含最少一区块,该转换系统还包含:
一逻辑元件用以判断该软件程序断言相对于在同一函数内的其他区块的一软件程序断言位置;
一逻辑元件用以判断该顶端硬件实体内的多个区块的多个区块位置;
一逻辑元件用以判断一插入位置,该插入位置与在同一模块内的该多个区块的相对位置关系对应于该软件程序断言位置;以及
一逻辑元件用以插入该硬件程序断言于该插入位置。
13.如权利要求8所述的转换系统,还包含:
一逻辑元件用以读取一第一组来源文件,该第一组来源文件包含多个以软件程序语言写成的来源文件,其中还包含该第一来源文件;
一逻辑元件用以建立一第一阶层结构用以表示该第一组来源文件内的程序代码文件阶层结构;以及
一逻辑元件用以判断一第二组来源文件内的该第二来源文件,该第二组来源文件由该第一组来源文件转译而来,其中该第二来源文件在该第二组来源文件的阶层结构位置对应于该第一来源文件在该第一阶层结构的位置。
14.如权利要求8所述的转换系统,其中上述的软件程序断言包含一布尔代数与一输出字串,而上述的硬件程序断言包含一属性定义。
15.一种转换一软件程序语言来源文件中的断言到硬件描述语言来源文件中的方法,包含:
从一第一来源文件内的软件程序语言程序代码中读取一软件程序断言;
定位一软件程序函数内该软件程序断言的位置;
自一第二来源文件读取一硬件程序模块,该硬件程序模块对应该软件程序函数,该第二来源文件包含由该第一来源文件的来源程序代码转译而来的硬件描述语言来源程序代码,其中该第二来源文件并不包含由该第一来源文件转译而来的硬件程序断言;
转换该软件程序断言为以硬件描述语言写成的一硬件程序断言;
基于该软件程序函数的位置判断在该硬件程序模块的一插入位置,用以插入该硬件程序断言;以及
在该插入位置插入该硬件程序断言。
16.如权利要求15所述的转换方法,其中上述该软件程序函数与该硬件程序模块都包含最少一区块,该转换方法还包含:
判断该软件程序断言相对于该软件程序函数内其他区块的一软件程序断言位置;
判断该硬件程序模块内多个区块的多个区块位置;
判断该多个区块位置之中对应到该软件程序断言位置的一对应区块位置;以及
插入该硬件程序断言于该对应区块位置。
17.如权利要求15所述的转换方法,其中上述的软件程序断言包含一布尔代数与一输出字串,而上述的硬件程序断言包含一属性定义。
CNA2007101010439A 2006-06-01 2007-04-23 将软件程序代码断言转换为硬件描述语言程序代码的方法 Pending CN101055523A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/445,013 US20070294647A1 (en) 2006-06-01 2006-06-01 Transferring software assertions to hardware design language code
US11/445,013 2006-06-01

Publications (1)

Publication Number Publication Date
CN101055523A true CN101055523A (zh) 2007-10-17

Family

ID=38795377

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007101010439A Pending CN101055523A (zh) 2006-06-01 2007-04-23 将软件程序代码断言转换为硬件描述语言程序代码的方法

Country Status (3)

Country Link
US (1) US20070294647A1 (zh)
CN (1) CN101055523A (zh)
TW (1) TWI329821B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199652A (zh) * 2014-08-26 2014-12-10 邱涌 基于数据流的c to hdl同步映射方法
CN111192503A (zh) * 2018-11-15 2020-05-22 株式会社麦卢思 块型无线编码命令输入装置及方法
CN111615688A (zh) * 2019-05-28 2020-09-01 深圳市大疆创新科技有限公司 一种断言验证代码绑定方法及装置
CN112364581A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112560401A (zh) * 2020-12-22 2021-03-26 成都海光微电子技术有限公司 Verilog文件转换方法、装置、存储介质及设备
CN113496105A (zh) * 2020-03-20 2021-10-12 洛极豪斯私人有限公司 用于数字电路设计的综合用hdl的rtl描述的方法
CN114547085A (zh) * 2022-03-22 2022-05-27 中国铁塔股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN116663463A (zh) * 2023-07-27 2023-08-29 北京开源芯片研究院 一种电路验证方法、装置、电子设备及可读存储介质
CN116661794A (zh) * 2023-04-21 2023-08-29 合芯科技有限公司 一种硬件描述语言语义转换方法及装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7934183B2 (en) * 2008-04-25 2011-04-26 Synopsys, Inc. Method and apparatus for simulating behavioral constructs using indeterminate values
TWI407370B (zh) * 2010-04-30 2013-09-01 Univ Nat Taiwan 正規表示法電路系統以及其共用方法
JP6352607B2 (ja) * 2012-09-07 2018-07-04 三星電子株式会社Samsung Electronics Co.,Ltd. アサーション生成装置及び方法並びにプロセッサ検証装置及び方法
US20140282390A1 (en) * 2013-03-15 2014-09-18 Nvidia Corporation System, method, and computer program product for creating a compute construct
US9323502B2 (en) 2013-03-15 2016-04-26 Nvidia Corporation System, method, and computer program product for altering a line of code
US9015643B2 (en) 2013-03-15 2015-04-21 Nvidia Corporation System, method, and computer program product for applying a callback function to data values
US9171115B2 (en) 2013-04-10 2015-10-27 Nvidia Corporation System, method, and computer program product for translating a common hardware database into a logic code model
US9015646B2 (en) 2013-04-10 2015-04-21 Nvidia Corporation System, method, and computer program product for translating a hardware language into a source database
US9021408B2 (en) 2013-04-10 2015-04-28 Nvidia Corporation System, method, and computer program product for translating a source database into a common hardware database

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134383A (en) * 1995-04-11 2000-10-17 Kabushiki Kaisha Toshiba Recording medium, recording apparatus and recording method for recording data into recording medium, and reproducing apparatus and reproducing method for reproducing data from recording medium
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
US6625797B1 (en) * 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
US20040163072A1 (en) * 2003-02-19 2004-08-19 Royal Design Ltd. Electronic design automation with automatic generation of hardware description language (HDL) code
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199652A (zh) * 2014-08-26 2014-12-10 邱涌 基于数据流的c to hdl同步映射方法
CN111192503A (zh) * 2018-11-15 2020-05-22 株式会社麦卢思 块型无线编码命令输入装置及方法
CN111615688A (zh) * 2019-05-28 2020-09-01 深圳市大疆创新科技有限公司 一种断言验证代码绑定方法及装置
CN113496105A (zh) * 2020-03-20 2021-10-12 洛极豪斯私人有限公司 用于数字电路设计的综合用hdl的rtl描述的方法
CN112364581A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112560401A (zh) * 2020-12-22 2021-03-26 成都海光微电子技术有限公司 Verilog文件转换方法、装置、存储介质及设备
CN112560401B (zh) * 2020-12-22 2024-04-09 成都海光微电子技术有限公司 Verilog文件转换方法、装置、存储介质及设备
CN114547085A (zh) * 2022-03-22 2022-05-27 中国铁塔股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN116661794A (zh) * 2023-04-21 2023-08-29 合芯科技有限公司 一种硬件描述语言语义转换方法及装置
CN116661794B (zh) * 2023-04-21 2024-04-05 合芯科技有限公司 一种硬件描述语言语义转换方法及装置
CN116663463A (zh) * 2023-07-27 2023-08-29 北京开源芯片研究院 一种电路验证方法、装置、电子设备及可读存储介质
CN116663463B (zh) * 2023-07-27 2023-11-10 北京开源芯片研究院 一种电路验证方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
US20070294647A1 (en) 2007-12-20
TWI329821B (en) 2010-09-01
TW200805102A (en) 2008-01-16

Similar Documents

Publication Publication Date Title
CN101055523A (zh) 将软件程序代码断言转换为硬件描述语言程序代码的方法
CN1542649A (zh) 自然语言生成系统中用于句子实现中排序的成分结构的语言信息统计模型
CN1917371A (zh) 用于优化可编程逻辑器件性能的装置和方法
CN1368693A (zh) 用于全球化软件的方法和设备
CN1828618A (zh) 半导体设计装置
CN100342381C (zh) 集成电路设计和整合方法
CN1920812A (zh) 语言处理系统
CN101065746A (zh) 文件自动丰富的方法和系统
CN1490744A (zh) 检索确认句的方法和系统
CN1770107A (zh) 提取小树转换对
CN1530863A (zh) 设计检查系统,设计检查方法以及设计检查程序
CN1801155A (zh) 合并硬件设计语言的原始档案与查验资料档案的方法
CN101051332A (zh) 一种soc芯片系统级验证系统及方法
CN101055588A (zh) 获取限制词信息的方法、优化输出的方法和输入法系统
CN1141666C (zh) 利用标准笔划识别输入字符的在线字符识别系统
CN1734458A (zh) 电子设备建模的方法和系统
CN1667622A (zh) 使用形式技术的设计验证
CN1702650A (zh) 用于将日文翻译成中文的设备和方法以及计算机程序产品
CN1523660A (zh) 集成电路设计的双向技术系统
CN1539113A (zh) 层次集成电路设计和分析系统中对子模块设计的表达
CN1815480A (zh) 使用波形产生触发的方法与系统
CN1261898C (zh) 串扰检验方法
CN1525323A (zh) 处理器以及用于产生在处理器中使用的程序的编译器
CN1744092A (zh) 一种自动调度逻辑仿真与代码覆盖率分析的方法与系统
CN1910574A (zh) 自动翻译器及其方法和用于编写该方法的记录媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication