CN100338568C - 开发片上系统用的开发环境的生成方法 - Google Patents
开发片上系统用的开发环境的生成方法 Download PDFInfo
- Publication number
- CN100338568C CN100338568C CNB021482489A CN02148248A CN100338568C CN 100338568 C CN100338568 C CN 100338568C CN B021482489 A CNB021482489 A CN B021482489A CN 02148248 A CN02148248 A CN 02148248A CN 100338568 C CN100338568 C CN 100338568C
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- program
- information
- definition
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明揭示一种开发片上系统用的开发环境的生成方法及存储该程序的媒体。片上系统开发环境生成方法包含根据配置指定文件构筑编译程序的编译程序定制单元、构筑汇编程序的汇编程序定制单元及构筑仿真程序的仿真程序生成单元,配置指定文件包含指定的执行指令的硬件。
Description
技术领域
本发明涉及包含例如可变配置(configurable)处理器的片上系统(Systemon Chip)设计开发所利用的开发环境(development environment),特别涉及生成片上系统设备开发环境的方法及存储该程序的媒体。
背景技术
近年来,对于适用于例如多媒体处理等的LSI的需求呈现多样化的趋势。因而该LSI的市场周期逐渐短期化。因此,希望有短期开发最适合应用程序的LSI用的片上系统的设计开发环境。这里,所谓开发环境意味着构筑片上系统时所需要的硬件及系统开发支持工具等软件。
一般,在LSI内装有通用处理器时,硬件设计成本几乎等于零。但是,这样构成的LSI由于对于应用程序不是最佳的,因此很难充分发挥应用程序的性能。为此,最近提供一种指令及存储器结构等能够选择的可变配置处理器。另外,可变配置处理器的提供者提供指定配置、;输出能够逻辑合成的硬件描述的系统。根据这样的处理器及系统,通过指定选项指令及存储器大小,能够在短时间内开发对于应用程序是最佳结构的处理器。
另外,通常在改变指令集等情况下,编译程序及仿真程序等软件开发工具也必须改变因此,通过指定配置,在描述硬件的同时,还提供生成软件开发工具的系统。根据这样的系统,能够大幅度削减软件开发工具设计所需要的劳力及时间。
以往对于精简指令集计算机(RISC:Reduced Instruction Set Computer)内核(core)开发了可变配置的数字信号处理器(DSP:Digital SignalProcessor)协处理器。但是,该DSP协处理器只能够使用预先准备的工业标准结构(ISA:Industry Standard Architecture),除此之外不能使用。另外,虽也有能够追加新指令的可变配置处理器,但只能追加固定类型的指令。因此,很难适应例如超长指令字(VLIW:Very Long Instruction Word)等结构,灵活性不够。
再有,为了描述追加的指令,例如采用Verilog那样的硬件描述语言(HDL:Hardware Description Language)。因此,不能有效地追加指令。
再有,很维以用户定义的指令生成所需要的开发环境。因而,希望有能够以足够的灵活性而且简单生成具有高性能硬件的LSI开发环境的片上系统开发环境生成方法及存储该程序的媒体。
发明内容
根据本发明的一个方面,提供了一种使用片上系统开发装置生成用来开发片上系统的开发环境的方法,所述片上系统开发装置包括编译程序定制单元、汇编程序定制单元以及仿真程序定制单元,所述方法包括:解析输入的命令;对应于被解析的所述命令,根据描述片上系统的配置的配置指定文件的信息,所述编译程序定制单元构筑编译程序,所述编译程序用于开发与所述配置指定文件相对应的片上系统,所述汇编程序定制单元构筑与所述配置指定文件相对应的汇编程序,所述仿真程序定制单元构筑与所述配置指定文件相对应的仿真程序;其中,所述配置指定文件指定执行指令的硬件。
根据本发明的另一个方面,提供一种使用片上系统开发装置生成用来开发片上系统的开发环境的方法,所述片上系统开发装置包括编译程序定制单元、汇编程序定制单元、仿真程序定制单元以及验证向量生成单元,所述方法包括:解析输入的命令;对应于被解析的所述命令,根据描述片上系统的配置的配置指定文件的信息,所述编译程序定制单元构筑编译程序,所述编译程序用于开发与所述配置指定文件相对应的片上系统,所述汇编程序定制单元构筑与所述配置指定文件相对应的汇编程序,所述仿真程序定制单元构筑与所述配置指定文件相对应的仿真程序;其中,所述配置指定文件指定执行指令的硬件,所述验证向量生成单元根据所述配置指定文件的指令的动作定义,生成处理器的验证向量。
附图说明
图1所示为本发明采用的片上系统开发装置的简要构成图。
图2所示为设定文件生成单元的构成图。
图3所示为配置指定文件的描述例子。
图4A所示为对全部处理器公共的存储器区域的描述例子,图4B所示为生成的本地存储器映射的一个例子,图4C所示为ISA定义文件的描述例子。
图5所示为片上系统开发环境生成单元的构成图。
图6所示为图5所示的RTL生成单元一实施例的构成图。
图7所示为RTL模板的一个例子。
图8所示为图5所示的仿真程序定制单元一个例子的构成图。
图9A所示为仿真程序起动选项文件的一个例子,图9B所示为调试程序起动选项文件的一个例子,图9C所示为机器指令函数说明标题文件的一个例子。
图10所示为图5所示的编译程序定制单元43一实施例的构成图。
图11A所示为编译程序起动选项文件的一个例子,图11B所示为验证向量生成用的用户定义指令文件的一个例子。
图12所示为本发明的片上系统开发环境生成单元3的的程序构成图。
图13所示为配置指定文件的一个例子。
图14所示为图13所示的寄存器定义单元的具体描述例子。
图15所示为累加器定义的一个例子。
图16所示为移位位数寄存器定义的一个例子。
图17所示为协处理器定义的一个例子。
图18所示为DSP模块用配置指定文件的例子。
图19所示为SIMD指令的一个例子。
图20所示为利用1行的描述例子。
图21所示为利用1行的描述例子。
图22所示为采用变址的描述例子。
图23所示为SIMD指令库的例子。
图24所示为根据指令库生成编译程序等工具的方法的构成图。
图25所示为配置指定文件内的指令集定义单元的例子。
图26所示为PTYPE行的描述例子。
图27所示为冒险信息的描述例子。
图28所示为冒险信息与流水线动作。
图29所示为编译程序用的调度信息例子。
图30所示为流水线动作描述的例子。
图31所示为RTL生成单元中的用户定义模块的高位合成例子。
图32所示为接口匹配方法的构成图。
图33所示为ISA信息的生成方法,所示为与指令CPXOR 3有关的指令定义例子。
图34所示为自动生成的ISA信息。
图35所示为指令CPXOR3的验证程序图。
图36所示为仿真程序生成单元的简要动作图。
图37所示为片上系统开发环境生成系统简要例子的立体图。
具体实施方式
下面参照附图说明本发明的实施形态。
首先,用图1至图10简要说明本实施形态采用的片上系统开发装置。
(片上系统开发装置的构成)
图1所示为片上系统开发装置1。片上系统开发装置1具有设定文件生成单元2、用户定义模块用用户定义指令存储单元3、片上系统开发环境生成单元4、性能评价单元5、结束判断单元6、变更项目设定单元7、输入输出接口单元8及控制单元9。
与片上系统开发装置1连接有向装置1内输入各种信息用的输入单元10、以及从装置1输出各种信息用的输出单元11。作为输入单元10,可以采用例如键盘、鼠标指示器、数字键及触摸屏等。作为输出单元11,可以采用例如显示装置或打印装置等。
图2至图13所示为上述片上系统开发装置1内的各单元构成。
(设定文件生成单元的构成)
图2所示为设定文件生成单元2的构成。设定文件生成单元2具有输入分析单元21、本地存储器映射生成单元22、选项信息存储单元23、器件构成存储单元24、高速缓冲存储器构成存储单元25及本地存储器映射存储单元26。设定文件生成单元2根据描述片上系统设计上的配置的配置指定文件(下面也称为结构数据库文件)、变量设定信息、最优先项目设定信息、目标性能指定信息及由变更项目设定单元7供给的变更项目表信息,生成并存储片上系统设计上的配置。前述目标性能指定信息包含硬件性能及软件性能的一种或两种性能。作为硬件性能指标包含面积、频率及功耗。作为软件性能指标包含代码大小、有效指令数及执行周期数。
前述输入分析单元21对配置指定文件的内容进行分析,将配置指定文件内描述的配置内容分配给选项信息存储单元23、器件构成存储单元24及高速缓冲存储器构成存储单元25的各单元。
在前述配置指定文件内描述有无选项指令、有无器件、有无高速缓冲存储器、高速缓冲存储器的大小、用户定义指令、用户定义硬件模块、LSI内部的存储器映射及多处理器构成(多处理器数量等)信等信息。另外,在用户定义指令及用户定义硬件模块的描述部分,利用绝对路径或相对路径指定描述用户定义指令或用户定义模块的文件名的存储位置(在本实施形态中,为用户定义模块用用户定义指令存储单元3的位置)。
在有无前述器件中,对于器件包含指令存储器、数据存储器及协处理器,对于指令存储器及数据存储器的可变项目包含大小及地址。在前述存储器映射包含外部存储器区域、内部存储器区域及输入输出区域,对于外部存储器区域还包含高速缓和冲存储器访问区域的指定项目。另外,对于各存储器区域还包含等待时间信息。
另外,在根据配置指定文件指定片上系统设计上的配置时,用户从设定文件生成单元2内的各存储单元23-26定义的变量中选择1个值。在例如图3所示的配置指定文件内描述该选择的值。
即例如在下面所示的SIZA描述中,内装数据存储器的大小能够选择例如1、2、4、8、16、32[KB]的某一个值。在省略该SIZE描述时,表示大小为缺省的8[KB]。
DMEM:
SIZE Ptype={1,2,4,8,16,32},defaulf=8,comment=“内装数据存储器的大小”;
另外,在以下所示的ISA_DEFINE描述中,表示作为用户定义指令的ISA定义文件名,必须描述任意的字符串。
UCI:
ISA_DEFINE Ptype=string,default=“”,comment=“用户定义指令的ISA定义文件名”;
另外,上述配置设定作业也可以通过输入输出接口单元8,利用对话式的处理来进行。通过对话进行配置设定,用户不意识到配置指定文件的文法等,能够容易设定配置。因此,与直接在文件中描述的情况相比,能够缩短配置设定所需要的时间。特别是能够通过对话处理所有的配置设定。因此,能够防止忘记设定一个配置出错的情况。
另外,也可以对配置设定变量。在对配置设定变量时,设定文件生成单元2采用基本设定、变量侧定用而制成的模板及用户设定值的某一个,自动导出其它的配置设定值。通过对配置设置变量,用户能够同时得到与配置可变范围相应的多个开发环境及验证环境。因此,能够缩短LSI的开发周期。
再有,也可以在配置中设定最优先项目。在配置中设定最优先项目时,设定文件生成单元2对于最优先项目以外部分的设定值,生成最优先项目为最佳的配置。在该生成中,使用基本设定及根据最优先项目的模板或用户指定的设定值。通过在配置中指定最优先项目,用户可以不识别片上系统的构成,能够生成适合优先项目的构成的开发环境及验证环境,并对其进行评价。
(本地存储器映射生成单元的构成)
本地存储器映射生成单元22将根据配置指定文件指定的全局映射与片上系统内的一个个处理器的本地存储器信息进行合并,生成片上处理器的本地存储器信息进行合并,生成片上系统内的每个处理器的本地存储器映射。前述全局映射是例如图4A所示的所有处理器公共的存储器区域。另外,作为前述本地存储器信息,包含例如指令存储器、数据存储器、指令高速缓冲存储器及数据高速缓冲存储器。图4B所示为生成的本地存储器映射的一个例子。该生成的本地存储器映射存储在本地存储器映射存储单元26内。
这里,处理器的本地存储器区域,可以对于每个本地存储器保留的全局映射中的存储器区域,通过使其反映利用配置指定文件指定的存储器大小而生成。另外,也可以通过预先在全局映射中指定各处理器的影子存储器信息,在各处理器的本地映射中生成包含其它处理器的本地存储器的影子存储器。
选项信息存储单元23根据输入分析单元21对配置指定文件的分析结果,将片上系统内装的处理器指令集内选项指令的ON/OFF选择有关的信息进行存储。
器件构成存储单元24根据输入分析单元21对配置指定文件的分析结果,将片上系统内装的器件的ON/OFF选择有关的信息及其大小有关的信息、地址信息、处理器指令存储器及数据存储器有关的信息、以及协处理器等的选项硬件有关的信息进行存储。
(高速缓冲存储器构成存储单元的构成)
高速缓冲存储器构成存储单元25根据输入分析单元21对配置指定文件的分析结果,将片上系统的高速成缓冲存储器的ON/OFF选择及高速缓和冲存储器的类型(direct 2-way,4-way,n-way)有关的信息、以及大小有关的信息进行存储。
(本地存储器映射存储单元的构成)
本地存储器映射存储单元26将本地存储器映射生成单元22生成的本地存储器映射有关的信息进行存储。
(用户定义模块及用户定义指令存储单元的构成)
用户定义模块用用户定义指令存储单元3将用户定义的硬件模块及片上系统内装的处理器指令集中的用户定义指令有关的信息进行存储。这里,用户定义的硬件模块有关的信息最好用RTL(Register Transfer Level,寄存器传送级)描述或动作描述,指令动作有关的信息最好用C模型(包含C++模型)描述,存储在存储单元3内。动作描述与C模型描述也可以相同。另外,用户定义指令有关的信息由配置指定文件指定。最好在例如图13所示的结构DB文件中描述并存储。
(片上系统开发环境生成单元的构成)
片上系统开发环境生成单元4如图5所示,具有RTL生成单元41、仿真程序定制单元42、编译程序定制单元43、汇编程序定制单元44及验证向量生成单元45。该片上系统开发环境生成单元4对于设定文件生成单元2内存储的配置的全部组合,生成片上系统的硬件、验证环境及开发设计工具。
下面详细说明该片上系统开发环境生成单元的内部构成。
(RTL生成单元的构成)
RTL生成单元41根据设定文件生成单元2的存储单元内存储的配置,生成片上系统内装的处理器的RTL描述。
图6所示为RTL生成单元41的一实施例。块连接单元41d参照器件构成存储单元24及高速缓和冲存储器构成存储单元25内存储的配置,从RTL模板41a及41b选择与用户设定的配置对应的模板。高位合成处理单元41e通过将用户定义模块用用户定义指令存储单元6内存储的用户定义指令或用户定义模块的性能指标即动作描述进行高位合成,生成RTL描述。进一步连接单元41d对处理器内核单元的RTL描述41c连接前述选择的RTL模板及由高位合成处理单元41e生成的RTL描述,生成处理器的RTL描述。另外,在存储单元3内的性能指标是RTL描述时,照原样使接口信号一致进行连接。
另外,在定义多处理器构成时,块连接单元41d生成多个处理器描述,生成用总线将它们连接的多处理器的RTL描述。
另外,RTL模板41a及41b内所含的指令存储器、数据存储器、选项硬件、指令高速缓冲存储器及数据高速缓冲存储器对于用户可能选择的各存储器大小,预先准备RTL描述。这些RTL描述能够根据指定的配置有选择地连接。另外,对于选项指令,对于选项指令的ON/OFF全部的组合,准备与选项指令对应的硬件模板。
图7所示为RTL模板的一个例子。在图7中,选项指令单位的RTL模板对于除法选项指令(DIV)的ON/OFF及最大最小值选项指令(MINMAX)的ON/OFF的4种组合,准备RTL描述作为各模板。这样模板对照器件构成存储单元24及高速缓冲存储器构成存储单元25内存储的配置,有选择地与内核RTL描述连接。另外,对于协处理器等选项硬件,也在配置中指定为有效时,已经定义的RTL描述与内核RTL描述连接。再有,在有用户定义的硬件时,用户描述的硬件描述与内核RTL描述连接。
利用以上的连接处理,RTL生成单元41生成与设定的配置对应的处理器的RTL描述。例如,在最初构筑处理器1时,用户作为配置的参数指定,若对处理器内核追加4[KB]的指令存储器及4[KB]的数据存储器,则能够自动得到处理器1的RTL描述。
另外,在构筑处理器2时,用户作为配置的参数指定,对处理器内核例如追加2[KB]的指令存储器、4[KB]的数据存储器、2[KB]的指令高速缓和冲存储器及4[KB]的数据高速缓冲存储器。再通过追加协处理器及几个选项指令及用户定义指令的RTL描述,能够得到处理器2的RTL描述。
另外,通过使表现可变项项目作为参数的RTL模板反映配置中设定的值,以代替预先准备的多个RTL模板,也能够得到RTL描述。再有,这样的参数化的RTL模板也可以对每个存储器及高速缓冲存储器等部分模块设置。或者,也可以对包含存储器及高速缓冲存储器等部分模块的整个处理器设置RTL模板。另外,也可以是包含全部参数的一个RTL模板。
(仿真程序定制单元的构成)
图8所示为仿真程序定制单元42的一个例子。该仿真程序定制单元42生成按照配置执行指令动作的仿真程序。
在图8中,再编译单元42c将用户定义模块及用户指令存储单元3内存储的用户定义硬件的C模型放入仿真程序模板42a中,进行再编译,通过这样再构筑C模型的仿真程序。另外,起动选项信息抽取单元42d参照设定文件生成单元内的前述器件构成存储单元24及高速缓冲存储器构成存储单元25存储的数据,生成指定起动时的选项的仿真程序起动选项文件(参照图9A)。
组合处理单元42e将再编译单元42c供给的再构筑的仿真程序与起动选项信息抽取单元42d供给的仿真程序起动选项文件组合,通过这样生成按照配置执行指令动作的仿真程序。
另外,仿真程序最好具有通过特定地址时输出调试指令的执行结果的手段。以往,在执行途中产生错误时,有输出差错的断言差错程序等。但是,在器件正常执行时,为了检查途中经过情况,只有将输出途中结果的指令预先嵌入应用程序中,或者用调试程序等停止执行,读取途中经过。与此不同的是,若使其通过起动时指定的地址时输出规定的信息,则能够用仿真程序在执行应用程序的途中检查途中经过情况,例如用下面所示的命令起动仿真程序。
Sim-load lest。Hex-printx mem(Ox400)at Ox1200
这里,sim表示片上系统的仿真程序,-load text。Hex表示装入称为text。Hex的16进制文件的指令,-printx mem(Ox400)at Ox1200表示在通过Ox1200地址时输出存储器的Ox400地址的内容的指令。
即仿真程序存储了用该变无指定的指示,程序计数器每通过一次Ox1200地址,就将Ox400地址的内容以16进制数输出给控制台。这时,应用程序中不一定嵌入观侧用的代码。因此,仿真对于指令数及周期数等统计信息完全没有产生影响,能够观测应用程序的执行情况。另外,也不需要在特定地址停止执行并通过人手读出存储器的值进行显示等操作。因此,能够既正确取得统计信息,又确认特别想注意的途中结果,同时对应程序进行仿真。所以,能够以高效率开发LSI。
另外,仿真程序在对指定以外的区域进行存储器访问时,最好停止执行。在根据设定的配置起动仿真程序时,明确给出能够使用的存储器。假设若访问基板上未安装的区域的存储器,则例如总线出错,其以后的动作就不能保证,动作不能保证的程序在仿真程序执行时,通过指出出错,必须提前进行修正。因此,仿真程序指定存储器区域,未明确指定的区域禁止访问。再有,仿真程序在访问该禁止访问区域时,发出警告,并停止程序动作。另外仿真程序在有对话方式(调试方式)并转向对话方式时,能够分析在哪里发生了错误。即仿真程序在与调试程序通信进行动作时,中断仿真动作,转向等待调试程序的命令。再有,显示访问了无效区域这样的错误,并提前确实将程序错误传递给用户。
另外,存储器的译码电路有的情况省略连接高位地址信号线而构成。在这种情况下,即使执行目标地址弄错的程序,也不会成为总线出错。但是在访问是写入的情况下,有时会改写未想到的地址的内容,后面的执行结果不是期望的那样。在用RTL仿真程序执行该错误的程序时,不能够立刻发现错误。但是,在对仿真程序给出正确的映射信息使其执行,使得能够仅访问正确的地址时,能够立刻警告已经访问了指定范围以外地址的情况。因而,用户能够提前检测出错误的程序,能够节约白白浪费掉的分析时间。因此,能够力图缩短开发周期。
另外,调试程序参照器件构成存储单元24及高速缓冲存储器构成存储单元25内存储的数据,生成图9B所示的调试程序起动选项文件。利用调试程序起动选项文件,调试程序能够根据配置进行动作。
另外,调试程序最好具有读出仿真程序的统计信息作为虚拟寄存器或变量的手段。调试程序保留称为$profile的变量作为特殊变量。对统计信息按每个区域进行管理。统计信息利用调试程序的变量读出命令print进行显示。例如为了显示第3区域的信息,则可以输入print$profile[3]。
dbg>print$profile[3]
Profile3:Count:7 Inst=123 Cycle=145
Dbg>
再有,语言工具最好具有将仿真程序用调试用指令与地址一起作为与符号及源程序行相同的调试信息输出的手段(在目标的机器指令中不反映)。在编译程序中,对于用仿真程序等的标准输出为了输出途中结果等进行扩展。与#pragma cosoleout相连的语名不翻译成目标的机器语言,与符号名及行编号相同,作为调试信息存储在文件中。仿真程序在读入带有调试信息的目标文件时,将#pragma语名定义的地址信息进行存储,同时将调试输出信息的printf(“a=%d¥m”,a)进行存储,在仿真程序想要执行该地址时,判断为必须输出调试信息,将printf语名送往语名分析程序,输出调试信息。
这样,也可以对目标的机器指令不产生影响,在仿真程序执行时输出调试信息,仿真程序也不中断执行能够确认内容。这时,仿真程序执行时采集的统计信息是与在目标执行的信息相同的信息。若采用别的表现方式,则在目标及仿真程序可以采用相同的目标代码。因而,由于不需要因执行环境不同而进行再编译的时间的缘故,因此能够缩短开发周期。另外,由于能够共有单一的目标文件,因此可知,管理变得比较容易。
Func(int b){
Flout a;
For(I=1;I<20;I++){
A=b/I;
#pragma consoleout printf(“a=%d¥n”,a);
}
(编译程序定制单元的构成)
编译程序定制单元43参照选项信息存储单元23及用户定义模块及用户定义指令存储单元3内存储的数据,生成包含机器指令函数说明的图9c所示的机器指令函数说明标题文件。另外,这里所谓的机器指令函数说明,由于是由高级语言直接指定处理器固有的指令,因此是将处理器固有的指令作为高级语言的函数说明进行描述的。
图10所示为编译程序定制单元43的一实施例。在图10中,机器指令函数说明抽取单元43c参照用户定义模块及用户定义指令存储单元3存储的用户定义指令,抽取对应的机器指令函数说明。另外,结合处理单元43d参照选项信息存储单元23内存储的数据,从已经定义的模板43b选择与有效的选项指令对应的机器指令函数说明。再进一步,结合处理单元43d将所述模板43b与机器指令函数说明抽取单元43c供给的机器指令函数说明结合,生成机器指令函数说明标题文件。在该机器指令函数说明标题文件中,包含配置中有效的选项指令及用户定义指令所对应的机器指令函数说明。
这样,用户根据高级语言程序直接指定配置中指定的选项指令用语用户定义指令,并能够利用。
再有,编译程序定制单元43具有选项指令抽取单元43a。选项指令抽取单元43a参照选项信息存储单元23内存储的数据,取得能够最佳利用的选项指令信息,根据该选项指令信息,编译程序定制单元43生成指定编译程序起动时的选项的编译程序起动选项文件(参照图11A)。
通过这样,能够反映可利用的选项指令信息以使编译程序为最佳。另外,编译程序的函数库由于使用起动选项文件从源程序进行再编译,因此能够生成包含可利用的选项指令的库。
(汇编程序定制单元的构成)
汇编程序定制单元44取入可利用的选择指令及用户定义指令的助记符及指令形式的信息,再构筑汇编程序。根据该汇编程序定制单元44,对于由可利用的全部指令的组合构成的汇编程序,能够生成对应的目标代码。
(验证向量生成单元的构成)
验证向量生成单元45参照设定文件生成单元2内的各存储单元内指定的配置,生成验证指定的片上系统构成的验证向量。这里,在片上系统的规模较大时,为了在有限的时间内结束验证,必须重点验证由基本构成改变的部分。因此,为了重点验证指定的选项指令及指定大小的高速缓冲存储器等,验证向量最好根据指令集描述,生成与各指令对应的验证向量群(图11B所示为验证向量生成用的用户定义指令文件的一个例子)。
下面再进一步具体说明本实施形态。
本实施形态的环境是根据描述处理器指令动作的配置指定文件(结构DB文件),自动构筑RTL、编译程序、汇编程序、仿真程序、验证向量及调试程序。该配置指定文件包含指定预先定义的多个结构中的一个结构的描述(指定结构形式)。作为这里所说的结构型式的例子包含以VLIW形式执行(以特定的管道(VLIW槽)执行)及DSP指令。根据该指定的结构型式,控制编译程序的指令调度及VLIW的并行功能。另外,调整指令集及仿真程序中的性能估计值。通过利用该环境,用户能够根据应用程序,自己定义指令。将该用户定义的指令称为用户定义指令。另外,可以利用高级语言编写程序,用仿真程序对该程序的性能进行评价。
再有,作为基本构成要素,是对用户定义指令自动构筑机器指令函数的环境。通过使用机器指令函数,能够使用编译程序具有的功能、例如指令调度、VLIW的并行(指令,packing指令压缩)及寄存器分配等。
下面在各实施形态中进行具体说明。
(第1实施形态)
图12所示为本发明的第1实施形态。图12为简要表示追加图1所示的片上系统开发环境生成单元4的指令用的实施例,所似与图5所示的构成相同。
由设定文件生成单元2供给的作为结构DB文件的配置指定文件供给语句分析程序(parser)。该分析程序对配置指定文件进行分析。命令解释程序对用户指定的命令进行分析,根据分析的命令的内容,控制例如RTL生成单元、仿真程序生成单元。编译程序定制单元、汇编程序定制单元、验证向量生成单元及调试程序生成单元的执行顺序。作为执行方式,可以选择预先登录一连串的处理并连续执行这些处理的批处理或会话型处理等。用户指定的命令可以用例如CUI(Character Base User Interface,基于字符的用户接口)等输入。前述分析程序也有的情况是利用命令解释程序起动。
图13所示为作为结构DB文件的配置指定文件的一个例子。在配置指定文件中,可以描述例如处理器的指定、寄存器定义及指令定义等。在处理器的指定中,可以描述例如处理器的名称及类型。在图13中,处理器作为结构型式描述了(2_WAY_VLIW)型式。即表示在预先定义的结构中,选择2-WAY的VLIW。
另外,指令定义由指令的助记符、位模式及动作描述构成。这里,位模式包含操作码及操作数的位信息。
动作描述除了通常的程序动作描述以外,还能够描述位分割、位结合、符号/零扩展及溢出动作等。另外,为了实现SWAP动作等,也可以使用需要的临时变量。
另外,图13中仅描述了一部分。
根据第1实施形态,利用命令解释程序,根据分析的命令内容,控制RTL生成单元、仿真程序生成单元、编译程序定制单元、汇编程序定制单元,验证向量生成单元及调试程序生成单元的执行顺序。因此,用户能够任意设定开发环境的生成顺序。因而,能够根据应用程序的开发顺序,任意生成开发环境。
(第2实施形态)
第2实施形态是关于前述寄存器定义单元。图14所示为图13所示的寄存器定义单元的具体描述例子。在寄存器定义单元中,指定通用寄存器的个数、编译程序的寄存器使用法(函数的返回值用寄存器、变无用寄存器、与利用函数调用而调用的函数连续的寄存器、不与利用函数调用而调用的函数连续的寄存器、栈指针用寄存器、全局指针用寄存器、微指针用寄存器及零寄存器等)、通用寄存器的别名定义及控制寄存器定义。寄存器使用法可以省略,在省略时,生成采用缺省的使用法的编译程序。
在图14中,通用寄存器数GPR定义了16个,作为编译程序的寄存器使用法,函数的返回值用寄存器定义为寄存器0,函数变元用寄存器数ARG定义为寄存器1、2、3及4,零专用寄存器ZERO定义为寄存器12,栈指针寄存器SP定义为寄存器15。另外,定义环形指针LP作为控制寄存器。
在别名(alias)定义中,能够定义寄存器的别名。在不需要别名时则省略。在通过利用别名定义,用户直接描述汇编代码时,可以根据自己的爱好进行描述。例如,在与栈指针SP对应的寄存器为寄存器15时,则定义SP作为寄存器15的别名。于是,若在汇编代码内描述SP,则汇编程序能够将SP认别为寄存器15。
另外,在寄存数量少的时候,有时将一部分特殊使用寄存器、例如微指针用寄存器TP(未图示)作为通用寄存器使用。这时,在将该寄存器作为微指针使用时,描述为“TP”,在将该寄存器作为通用寄存器使用时,则描述寄存器编号。若这样描述,则利用汇编代码能够区别该寄存器是作为微指针使用,还是作为通用寄存器使用。因而,能够构筑维护性好的汇编代码。
根据上述配置指定文件中描述的信息,能够定制编译程序、汇编程序、仿真程序、调试程序及验证向量等。即如图12所示,对编译程序定制单元提供寄存器的使用法及寄存器别名,对汇编程序定制单元提供寄存器名及寄存器别名,对RTL生成单元、仿真程序定制单元、验证向量生成单元及调试程序生成单元提供寄存器名。
例如,编译程序定制单元根据寄存器定义单元内定义的通用寄存器及控制寄存器的信息,生成编译程序。该编译程序具有能够对各寄存器直接访问的寄存器伪变量的定义。通过利用该寄存器的伪变量,用户能够以高级语言直接访问处理器具有的各寄存器。
另外,在配置指定文件中,还可以定义累加器及移位位数寄存器。
图15所示为累加器定义的一个例子。该例子是表示具有2个256bit的累加器。
图16所示为移位数寄存器定义的一个例子。该例子表示具有2个移位位数寄存器。
根据上述第2实施形态,用户能够根据应用程序改变编译程序的寄存器使用法。例如,在应用程序中频繁使用立即数“0”时,则准备始终为“0”值的寄存器,通过这样没有必要生成为了得到立即数“0”用的指令。因此,能够使代码大上及执行性能都提高。
另外,在应用程序中不太使用立即数“0”时,则不准备始终为“0”的寄存器,通过这样能够增加其它用途的寄存器数。因此,能够减少因寄存器不足而进行存储器访问的频繁程度,能够使代码大小及执行性能都提高。
再有,寄存器定义在有缺省、用户省略寄存器使用法时,设定缺省的使用法。这样,在采用编译程序的缺省使用法时,用户能够测量应用程序的性能。通过将该测量的性能作为参考,能够指定更好的寄存器使用法。
另外,编译程序具有寄存器伪变量的定义。因此,用户为了用高级语言访问寄存器定义中描述的全部寄存器,可以使用寄存器伪变量。该寄存器伪变量在高级语言内访问控制寄存器等特别的寄存器时是有用处的,也可以考虑与编译程序的在线汇编功能一起使用。因而可以说,准备全部寄存器的寄存器伪变量的功能是有效果的。
再有,寄存器定义单元具有别名定义,能够根据用户的爱好定义寄存器名。因而,能够构筑使用方便、维护性好的汇编代码。
(第3实施形态)
下面说明本发明的第3实施形态。第3实施形态是有关VLIW的。
VLIW有关指令的动作定义是在作为结构DB文件的配置指定文件内的指令定义单元进行的。在指令定义单元中描述指令使用说明、操作数(OP)代码及动作内容。根据指令的使用说明及OP代码的信息,生成定义汇编程序动作的汇编程序定义文件。另外,根据动作内容的定义,集中是指令的使用说明定义未描述的信息,而指令动作所需要的信息,例如指令的助记符未表现的对于数据的读出或写入所必须的高位寄存器及低位寄存器或累加器的信息,用于机器指令函数定义。通过这样,编译程序能够有更好的寄存器分配及指令调度。
在配置指定文件中,关于协处理器也可以定义。即如图7所示的处理器2,例如对RISC内核那样的处理器内核可以连接协处理器。作为该协处理器,有例如VLIW(Very Long Instruction Word,超长指令字)方式及DSP(DigitalSignal Processor,数字信号处理器)。
图17所示为协处理器定义的一个例子。为了与内核指令加以区别,具有表示是协处理器定义的信息,采用结构型。即描述协处理器的名称及协处理器的类型。在该描述之后,作为协处理器定义的相关信息进行寄存器定义及指令定义。协处理器定义的相关信息除了上述寄存器定义及指令定我之外,还具有有无安装VLIW方式(无、2并行、3并行)、运算数据宽度定义(在协处理器运算过程中保证的数据宽度)。
在安装VLIW方式时,在指令集定义中包含表示协处理器指令应该填充在VLIW方式的槽的什么地方的信息(图17的V3)。该槽的定义取决于处理器的使用来决定,在使指令并行时,成为表示是填充在哪一个槽的指令。
根据该信息生成与协处理器指令有关的前述机器指令函数定义文件。前述编译程序定制单元根据该机器指令函数定义文件,能够使用户定义的协处理器指令并行。另外,汇编程序定制单元就根据该机器指令函数定义文件,能够检验并行使用上是否正确。
槽信息提供给验证向量生成单元。验证向量生成单元根据槽信息,生成验证相对于并行指令的处理器动作用的所需要的验证向量。
运算定义宽度信息在指令动作定义内有临时变量时,或有符号扩展运算时,是仿真程序将该临时变量的位宽度及符号扩展后的位宽度作为多少位进行处理的信息。该宽度信息取决于在协处理器的寄存器定义单元内定义的寄存器的位宽度。例如,在指定协处理器的寄存器运算宽度为64位时,则运算定义宽度信息最大可以指定为64位。该运算定义宽度信息提供给仿真程序定制单元,在仿真程序中反映。
根据上述第3实施形态,用户能够具有对于定义的全部指令的机器指令函数定义文件。因此,通过使用机器指令函数,用户能够得到编译程序的寄存器分配、指令调度及VLIW的并行功能。因而,在应用程序的开发上是大有好处的。
另外,槽定义具有在使指令并行时表示是填充在哪一个槽的指令的信息。因此,能够对用机器指令函数表示的指令对适当槽进行填充,或者汇编程序能够利用适当的槽,能够促进用户应用程序的开发。
再有,使机器指令函数定义反映在使指令并行时使用的槽定义的信息。因此,在安装有VLIW方式的情况下,在使用户定义的协处理器指令并行时,将表示填充在哪一个槽的指令的信息提供给机器指令函数。因此,编译程序能够对机器指令函数正确进行VLIW的并行处理。由于在高级语言内能够使用机器指令函数,因此能够促进用户应用程序的开发。
另外,运算定义宽度信息在仿真程序中反映。因此,仿真程序能够使指令动作与处理器的性能指标一致。因而,能够使仿真程序的动作与实际处理器的动作一致。
再有,槽信息在汇编程序中反映。因此,在汇编程序中能够检验用户直接用于描述的汇编代码内的指令并行部分是否是按照性能指标那样。
另外,槽信息在验证向量中反映。因此,能够得到验证相对于并行指令的处理器动作用的所需要的验证向量。
(第4实施形态)
下面说明本发明的第4实施形态。第4实施形态是有关DSP的。
对于将DSP包含在内作为用户定义模块的功能,在配置指定文件中具有与其它模块加以区别用的标识符。在该标识符内描述DSP有关的定义。在DSP指令定义中,能够定义任意位宽度的指令。另外,在寄存器定义中,能够定义任意位宽度的寄存器。
图18所示为DSP模块用配置指定文件的例子。在最前面描述了称为DSP_NAME的结构区别用标识符。另外,在寄存器定义单元<dsp_register>附加寄存器宽度定义REG_WIDTH。在该例子的情况下,寄存器宽度设定为20bits。另外,在指令定义单元<dsp_ISA>定义了20bit的指令。
再有,DSP模块用配置指定文件能够描述未图示的指定固定小数点库的小数点位置的信息。该信息提供给编译程序定制单元,在编译程序的固定小数点库中反映。
另外,能够描述编译程序的DSP中特别的功能。该功能是与例如复数数据型、X/Y存储器、循环缓冲器、固定小数点数据型、位反转及不同种类寄存器组对应中的至少一个功能。
根据上述第4实施形态,配置指定文件包含处理器是DSP型、硬件指定是DSP指令形式的描述。再有,在DSP指令形式中,能够设定指令的位宽度。因此,用户能够根据应用程序的用途灵活设定指令的位宽度。因而,用户能够设定符合要求性能的DSP,能够减少不必要的成本。
另外,在DSP指令形式中,能够设定寄存器宽度。因此,用户能够根据应用程序的用途灵活设定寄存器的位宽度。因而,用户能够设定符合要求性能的DSP,能够减少不必要的成本。
再有,编译程序的固定小数点库一般与固定小数点的位置是灵活对应的。因此,性能会下降。但是,在本实施形态中,由于指定固定小数点库的小数点位置的信息在编译程序的固定小数点库中反映,因此能够防止性能下降。
另外,用户能够使用编译程序的面向DSP的特别功能。因此,能够缩短应用程序的开发周期,同时能够提高应用程序的性能。
(第5实施形态)
第5实施形态是有关SIMD(Single Instruction Multiple Data,单指令多数据)的。第5实施形态将SIMD的多个数据处理汇总为一个处理进行描述,根据该描述可以生成仿真程序,或者与多媒体数据型相对应。
即在指令能够处理SIMD数据时,在配置指定文件内的指令定义单元描述表示处理SIMD数据的信息。作为该信息是例如指令处理的数据长及各指令操作数的数据长。该信息指定SIMD数据宽度,用于生成机器指令函数定义及高级语言的SIMD数据用扩展说明符。通过这样,用户能够容易处理SIMD数据。下面所示为描述例子
CPPACK.B:CRO,CRg,CRp:
...
Cop:”SIMD=B,Pack=B:H:H”:
...
上述例子表示“CPPACK.B”指令的数据长为8位。即表示寄存器为64位时,是8并行,该寄存器宽度与寄存器定义单元内的协处理器寄存器宽度相同。除了“B”以外,还可以指定“H”(half word,半字,即16位)或“W”(word,字,即32位)。再有,根据有无“U”,区别是无符号还是有符号的数据。例如,在描述为“BU”时,表示8位的无符号数据。
另外,利用“Pack=B:H:H”这样的指定,表示“CPPACK,B”指令的操作数“Cro,CRq,CRp”分别为有符号8位、有符号16位及有符号16位的数据。
图19所示为SIMD指令中的“CPADD.H”的指令定义例子。该指令定义的协处理器的协处理器寄存器为例如64位宽度。该指令的数据长为“SIMD=H”即有符号16位。换名话说,该指令是以4并行计算16位宽度牟数据。另外,利用“PACK=H,H,H”表示该指令的操作数“CRl,CRm,CRn“分别为有符号16位的数据。再有,利用动作定义,表示该指令以4并行进行有符号16位的数据加法运算。这些信息提供给编译程序定制单元及仿真程序定制单元。在编译程序定制单元中,这些信息在编译程序的高级语言用扩展说明符的生成、机器指令函数的生成、寄存器分配、指令调度功能中反映。另外,在仿真程序定制单元中,这些信息在仿真动作及仿真结果输出功能中反映。
图19所示的例子是用4行表示以4并行进行有符号16位的数据加法运算的SIMD指令的动作描述。但是,可以用1行来描述该动作描述。
下面所示为描述的例子。
CRl.h=CRm.h+CRn.h; (1)
在上述例(1)中,“.h”是与“PACK=H,H,H”对应的描述。
图20所示为利用上述1行的描述例子。
在“PACK”的描述例如是“PACK=HU,B,BU”时,上述例(1)如下所示进行描述。
CRl.hu=CRm.b+CRn.bu; (2)
图21所示为利用上述1行的描述例子。
再有,通过利用变址(下标)“i”,能够简化下面所示的数据排列不一致的描述。
CRl[15:0]=CRm[63:48]+CRn[63:48];
CRl[31:16]=CRm[47:32]+CRn[47:32];
CRl[47:32]=CRm[31:16]+CRn[31:16];
CRl[63:48]=CRm[15:0]+CRn[15:0];
下面所示为简化的例子
CRl[i]=CRm[3-i]+CRm[3-i]; (3)
在例(3)的情况下,变址“i”取的值是取决于指令的数据宽度及协处理器寄存器的宽度的值。在“SIMD=H”及协处理器寄存器的数据宽度为64位时,变址“i”的值0-3。
图22所示为采用上述变址的描述例子。
根据上述第5实施形态,在配置指定文件的指令定义单元描述与SIMD指令有关的信秘。因此,编译程序定制单元根据与SIMD指令有关的信息,能够生成为了生成SIMD指令用的机器指令函数的定义文件。由于机器指令函数能够在高级语言内使用,因此能够促进用户应用程序的开发。
另外,能够使用在高级语言内说明SIMD数据用的特殊修饰词。因此,能够促进用户应用程序的开发。
再有,仿真程序定制单元根据输入的SIMD指令有关的信息,定制仿真程序的动作。因此,能够生成对SIMD指令进行正确动作的仿真程序。
另外,仿真程序定制单元根据输入的SIMD指令有关的信息,定制仿真程序的结果输出功能。因此,能够生成对SIMD指令容易进行分析的仿真程序输出结果。
再有,SIMD指令的动作描述,能够将多个指令汇总用1个指令描述,或用变址进行描述。因此,能够简化SIMD指令的指令动作描述。所以,能够将SIMD指令的指令动作描述形成对于用户以直觉容易理解的描述。
(第6实施形态)
第6实施形态是有关指令库的。
用户能够追加与配置指定文件的性能指标一致的指令。本片上系统开发环境生成系统保持已经定义的指令,建立库。下面将其称为指令库。该指令库对每种指令形成指令组。用户从指令库选择必要的指令,通过这样能够生成对应用程序特别的开发环境。
图23所示为SIMD指令库的例子。SIMD指令库中的这些指令是选项,与此相应的配置指定文件及RTL与基本指令分别另外预先准备。用户能够使用全部这些指令或选择特定的数据型的指令使用。
在图23中,在“.XX”描述作为指令使用的数据类型的助记符“UB,B,UH,H,W”的任何一个。该描述由用户可以选择。另外,如图23所示,也可以省略助记符的描述。在助记符固定为“UB,B,UH,H,UW,W”的任何一个时,也可以例如下面那样指明。该例子是助记符固定为“H”。
CPADD.H//2-operand 32bit addition(A<-A+B)
即使在上述那样描述的情况下,若改变助记符的描述,也能够与该变化相适应。
图24所示为根据指令库生成编译程序等工具的方法。在用户使用指令库的指令时,例如根据多个指令库ADB1及ADB2生成相应的中间元件IF1及IF2。该中间文件IF1及IF2与基本指令的中间文件IF3合并。将该合并的中间文件包含在编译程序等中,通过这样构筑整个环境。
上述例子是根据各指令库分别生成中间文件,再将这些中间文件合并。但是,也可以省略生成中间文件,直接将从各指令库选择的所需要的指令合并。
另外,也可以设定对指令分配类型例如槽信息的功能,使得不改变指定的指令库的指令功能,用户能够得到相结于应用程序为最佳的调度性能。
再有,例如在内核处理器与协处理器之间的数据传送指令在定义协处理器时,肯定是需要的。这样,若设定使得自动合并附属于主指令的指令(保留指令),则编译程序能够从高级语言的源程序级高效生成指令库的指令。或者也可以在指令库内明确描述预约指令。
再有,上述例子说明的是在编译程序中反映合并的文件情况。但是不限于此,通过将合并的文件提供给RTL生成单元,通过这样能够不改变指定的指令库的指令功能,选择安装。例如,也可以生成以大小优先的RTL模板。通过采用这样的构成,能够维持应用程序的性能,使生成的RTL的大小为最小。因而,能够抑制芯片尺寸的增大,能够降低成本。
另外,还可以不改变指定的指令库的指令功能,利用以性能优先能够高速动作的电路生成RTL模板。通过采用这样的构成,能够减小应用程序的等待时间等,能够提高性能。
根据上述第6实施形态,能够对应于应用程序设定指令库描述的指令处理的数据类型。因此,能够开发具有适合于应用程序的指令的处理器。
另外,即使在指令库描述的指令的数据类型已经决定的情况下,也能够改变数据类型。因此,能够改变为适合于应用程序的指令。
再有,可以从多个指令库选择所需要的指令,通过将这些选择的指令合并,设定一个处理器。因此,能够生成更适合于应用程序性质的处理器。
(第7实施形态)
第7实施形态对作为结构DB文件的配置指定文件内的高位动作描述进行说明。
配置指定文件内的高位动作描述可以是近似与C语言的“语名”相当的描述。但是,“!!”(位连接)、“[]”(部分位取出)及逻辑运算符与C语言不同。再有,本实施形态的高位动作描述具有在式子左边能够写位连接的特征。另外,本实施形态的高位动作描述不包含时钟概念,它是描述指令执行前的寄存器及存储器的值怀指令执行后的寄存器及存储器的值的关系。
下面所示为本实施形态的高位动作描述的不同及限制。
·不存在数据类型。
·具有可使用变量的规则。
·能够写位常数。
·!!表示位连接。
·[and、or、xor、nor、nand表示位逻辑运算符。
·(Signed)、(Unsigned)表示强制性运算符。
·在存储运算中,Men Word<>等函数可写在左边。
(可作为变量使用)
·操作数变量
·寄存器变量
·临时变量
(操作数变量)
操作数变量是在指令定义的操作数(<操作数>)中描述的,可以是下述那样的描述。
<寄存器指定>
<(abs)型><(abs)型>
<disp型><disp()型>
<cpx>(实数部分)(虚数部分)
...复数
<int> ...整数
<flt> ...浮点数
<立即数类型>
它们的刚才的操作数描述的指令的规格、表示寄存器参数的字母及指定符的位宽度必须一致。
(寄存器变量)
寄存器变量是操作数变量以外的寄存器,可以有以下那样的描述。
·特殊表示(名称指定,以数值表示变址)
例:PC、SRRO、CCR3
·数组指定
例:识别字符串+‘[’式子‘]’
例:CRT[Imm4]
注1:识别字符串+变址+‘[’数值‘]’为部分位取出。
例:CRT[4]为部分位。CTR[4]与CRT4相同。CTR[Rn][3:0]等也可以描述。
注2:不定表示(利用参数的变址表示及Rm等)分为操作数变量。操作数变量以外的不定表示作为出错。
(临时变量)
临时变量是所谓不是操作数变量及寄存器变量的变量。临时变量的名称使用下列方法命名。
·按照C语言变量名命名规则的名称。
·不与已经定义的寄存器名重复的名称。
·不是以操作数变量的名指定符prefix开始的名称。
不是以abs-、imm-、Imm-、disp-、code-、target-开始的名称。
(常数):
与Verilog相同,为SS...S’fnn...n。SS...S表示位数。在位数省略时,为32位。F为基数。D:10进制数,h:16进制数,0:8进制数,b:2进制数,在这些描述省略时,为10进制数。nn...n为常数值。在常数值的位数不够时,以0补足高位。在常数值大于位数时,则忽略位数。在nn...n中不能使用分隔符‘_’。在基数及常数值中也可以使用大写字母。
3’b001:3位的2进制数
32’Hff:32位的16进制数(高位用0扩展)
’01234:32位的16进制数(省略位数,与32’01234相同)
1:32位的10进制数(省略位数及基数,与32’d1相同)
10’5:10位的10进制数(省略基数,与10’d5相同)
(补充)
可以描述以如下。
a=b=c+d;
·也可以写函数调用。
·左边可以写函数调用。
MemWord(Rn)=a;
CTR[Imm4]=b;
·连接运算符
!!:位连接
·部分位取出
用[msb:1sb]指定
·预约函数名
存储器访问函数
MemWord
MemDouble Word
MemByte
MemHWord
MemDefaultSize
Control Bus
·位扩展函数
SignExtension
ZeroExtension
·条件判断函数
Overfolw
(左边连接)
·在左边写位连接时,用()将整个包围起来。
(HI!!LO)=Rn*Rm;
(SIMD描述)
参照第5实施形态。
(出错校验功能)
下面表示出错校验功能的代表性功能。
(1)操作码的重复校验
(2)每个指令规定的寄存器及操作数的RO/RW与动作描述的匹配性
(3)SIMD描述、Pack描述与动作描述的匹配性:在没有与SIMD、Pack指定的数据宽度相当的动作描述时,输出警告。具体来说,对每个用SIMD/Pack指定的数据宽度检查动作描述,在不存在它们以下位宽度的部分位参照/代入时,输出警告。以下所示为数据宽度与位宽度的关系。
数据宽度位宽度(msb-1sb+1)
B、UB 8
H、UH 16
W、UW 32
A 8、16、32
(4)参照数值未定的临时变时
在动作描述中,在最初出现临时变量的式子位于右边时,输出警告。
(5)在不参照定义了数值的临时变量时,输出警告。
图25所示为配置指定文件内的指令集定义单元的例子。该例子所示为LW指令及SWAP指令的定义。在LW指令的动作描述(用{}包围的部分)中“Rn”为寄存器指定的操作数变量,“disp8”为disp型的操作数变量,“SP”为寄存器变量。“ZeroExtension”及“MemWord”分别为进行位扩展及存储器访问的预约函数。另外,SWAP指令中的“tmp1”及“tmp2”为临时变量。
根据上述第7实施形态,在配置指定文件内的指令动作描述中能够进行高位描述。因此,容易追加新指令,而且能够容易分析已有的指令。因而,能够容易进行指令的改进及维持,能够促进用户应用程序的开发。
(第8实施形态)
第8实施形态是有关流水线描述的。
根据下述的流水线描述,生成编译程序的调度用信息及自动生成冒险验证向量用的信息。
流水线描述包含“流水线类型定义”及“冒险信息”两部分。
(1)流水线类型定义
有关流水线类型定义的书写格式如下所示。
PTYPE:<类型名>:<资源>,<操作>,<时间>,<变元>[:<资源>,<操作>,<时间>,<变元>:...];
各PTYPE行中,“<资源>,<操作>,<时间>,<变元>”四个变量最少必须有一个。四个变量可以用“:”分隔,连续描述任意数量。
PTYPE行中的四个变量的意义如下所述。即,资源表示寄存器等,操作表示读/写等,时间表示流水线的阶段。变元是对操作数(寄存器等)的变址。即PTYPE行表示对资源的操作是在流水线的阶段产生。
图26所示为PTYPE行的描述例子。
(2)冒险信息
冒险信息的书写格式如下所述。
HAZARD:<资源>:<动作1>(类型名1),<动作2>(类型名2)=<周期数>;
表示在资源中,类型1的先行指令进行动作1,类型2的后续指令进行动作2,在这种情况下的停止(stall)数。
图27所示为冒险信息的描述例子。该冒险信息的情况下,是对某协处理器的通用寄存器以流水线型式“pt1”的指令进行写入。然后,以流水线型式“pt2”的指令从相同的寄存器读出,在这种情况下,必须等待2个周期。
利用冒险信息及各指令指定的流水线定义,决定在仿真程序上执行发生冒险的指令串时的停止数。
例如,图28所示为指令“cinst1”为流水线型式“pt1”、指令“cinst2”为流水线型式“pt2”时的动作。
在图27所示的冒险信息的情况下,对某协处理器的通用寄存器以流水线型式“pt1”的指令进行写入。然后,以流水线线型式“pt2”<的指令从相同的寄存器读出,在这种情况下,必须等待2个周期。在图28所示例子的情况下,在阶段“T”中,以指令“cinst1”对协处理器的通用寄存器“$cr1”进行写入。然后,想在等待2个周期后,以指令“cinst2”从相同的寄存器进行读出。在这样的情况下,在仿真程序中指令“cinst2”停止1个周期。
(编译程序用的调度信息)
图29所示为编译程序用的调度信息的例子。
图29所示的例子是表示,在紧接PTYPE1的指令后的PTYPE2的指令停止3个周期,在紧接PTYPE2的指令后的PTYPE3的指令停止4个周期。根据该信息,编译程序进行调度,尽量使得PTYPE1与PTYPE2之间空开3个指令,使得PTYPE1与PTYPE3之间空开4个指令。
(生成冒险验证向量用的流水线动作描述)
图30所示为流水线动作描述的例子。
该动作描述由流水线定义及明确的停止指定所构成。关于该描述及由此的验证向量生成的详细情况在此省略。
根据上述第8实施形态,配置指定文件能够包含流水线定义的描述。因此,能够构筑流水线。另外,在流水线定义中,能够包含流水线型式的定义及冒险信息。
另外,配置指定文件能够包含关于流水线的编译程序用的调度信息。因此,编译程序能够根据调度信息对流水线的动作进行调度。
再有,配置指定文件能够包含关于流水线的冒险验证向量生成用的描述。因此,能够可靠验证流水线的冒险情况。
(第9实施形态)
第9实施形态是有关RTL的合成。
图31所示为图6所示的RTL生成单元中的用户定义模块的高位合成。即图31所示的用户定制指令的高位合成是除了通常的硬件资源分配及调度以外,进行内核单元及控制路径与存储器以及与接口(I/F)的匹配及生成。
图32所示为用户定制指令的合成中的接口匹配方法。利用图31所示的高位合成生成指令本体的RTL。在这种情况下,在指令本体部分与内核单元之间另外生成接口电路。内核单元与接口电路之间的连接通过输入输出的寄存器字段的信号、16位的操作数信号及停止信号来表现。指令本体以由该接口电路调用的形式来描述。指令本体与接口电路之间的连接以module的变元来表现。
根据上述第9实施形态,通过将通常的硬件资源分配及调度、还将内核单元及控制路径与存储器以及与接口进行匹配,能够进行用户定制指令的高位合成。
(第10实施形态)
第10实施形态是有关验证向量生成。
这里对根据前述配置指定文件生成结构验证程序(AVP:ArchitectureVerification Program)的生成用数据的方法进行说明。
(AVP生成所需要的数据)
这里将特别用于验证处理器指令单体功能的验证程序称为AVP。为了生成该AVP,要使用ISA信息。ISA信息中需要下述的数据。
·助记符
·操作数表
·操作数信息
操作数种类(寄存器/立即数)
操作数的位宽度
操作数为寄存器时,有无参照/代入
(ISA信息的生成方法)
下面说明根据结构数据库文件生成ISA信息的方法。在寄存器定义单元中,对每种寄存器定义寄存器数、寄存器的位宽度等。指令定义单元由助记符、操作数表及指令动作定义单元等构成。指令动作定义单元通过描述使用前述操作数表表示的操作数、寄存器表未表现的寄存器、临时变量及常数等语句,来定义指令动作。
图33所示为有关例如指令CPXOR3的指令定义。指令CPXOR3表示作为寄存器操作数需要描述CRO、CRq及CRp。寄存器名根据寄存器的种类不同,其前缀不相同,用“CR”开始的寄存器表示协处理器的通用寄存器。用‘{’及‘}’包围的部分是指令动作描述单元。在该例子的情况下可知,是将2个协处理器通用寄存器CRp及CRq的每1位的异或逻辑计算结果代入CRo指令。
如前所述,指令定义单元具有助记符信息及操作数表的信息。这些信息直接成为ISA信息的助记符信息及操作数表的信息。在操作数表中,记有操作数名表。操作数名中,Imm*,Imm*为立即数,除此为立即数,除此以外为寄存器。通过使用该规则,能够从操作数取得各操作数的种类。
各操作数的信息如下所述取得,在操作数为寄存器时,从寄存器定义信息取得寄存器的位宽度。在操作数为立即数时,从操作数代码取得立即数的位宽度。具体来说,在操作数代码的字符串中,‘i’的个数成为立即数的位宽度。
在操作数为寄存器时,有无操作数的参照/代入,是通过分析指令动作描述语句结构而取得。
通过用程序安装上述方法,能够根据图33所示的指令定义单元及图14所示的寄存器信息,自动生成图34所示的ISA信息。
(数据使用方法)
ISA信息可用于生成利用汇编程序描述的验证程序。首先,助记符及操作数使用的目的是生成验证程序中的检查对象指令代码。各操作数的操作数信息是为了下述的目的而使用的。
在操作数为立即数的操作数时,用位宽度的信息生成检查用的立即数数据。在操作数为寄存器操作数且参照该寄存器的值时,根据位宽度的信息等生成提供给寄存器的值。再根据该生成的值生成对寄存器设定的代码。生成数值的方法有n种。
第1种方法是在能够设定的位宽度(包含符号的数值)中随机生成数值的方法。
第2种方法是求出能够设定输入的区域(若是2个输入,则是2维平面上的区域),再将该区域依次细分。该方法是将该细分的区域的重心坐标作为输入值的方法。
根据第2种方法,能够可靠选择区域的点。另外,通过重点生成边界上及边界附近的点作为输入数据,可以进行边界条件的检查。
关于根据ISA信息生成验证一个个指令动作用的验证程序的方法,其详细情况为了简化说明而省略。
在操作数为寄存器操作数且对该寄存器代入数值时,生成将代入寄存器的指令的运算结果输出给运行记录文件的代码。根据图34所示的ISA信息自动生成图35所示的验证程序。
根据上述第10实施形态,验证向量生成单元根据前述配置指定文件的动作指令,能够生成处理器的验证向量。因而,能够可靠验证处理器的动作,能够有助于用户进行LSI开发。
(第11实施形态)
第11实施形态是有关仿真程序的生成。
这里对根据配置指定文件生成仿真程序的方法进行说明。
图36所示为前述仿真程序生成单元的简要动作。仿真程序生成单元根据配置指定文件及预先准备的C++模型模板,生成仿真程序。即仿真程序生成单元通过将所需要的信息输入C++模型模板,生成仿真程序的主单元、仿真程序的译码表及指令定义单元。主单元根据配置指定文件的标题单元及寄存器说明单元生成。译码表及指令定义单元根据配置指定文件的ISA单元生成。
这里,所谓译码表是将程序中的代码单元的位模式变换为指令串用的变换表。另外,所谓C++模型模板是生成仿真程序的C++源代码用的模板,通过将仿真程序生成单元需要的信息代入该模板,生成C++模型。
在主单元中存储能够利用的指令模式、通用寄存器及控制寄存器的数量及大小、指令间的冒险等这样的有关整个仿真程序的信息。
译码表存储配置指定文件的ISA单元各指令定义的操作码部分。仿真程序中的指令译码是将该表的操作码部分与指令的操作码部分进行比较,识别指令,通过这样生成的。
指令定义单元主要是通过将配置指定文件的动作描述变换为与之等效动作的C++描述而生成的。另外,在指令定义单元中还附加流水线线的型式、跟踪输出的格式、有无立即数操作数的符号扩展、以及在内核处理器的寄存器与协处理器的寄存器之间传送数据时的传送方向等信息。
附加传送方向信息的方法如下所述。
传送方向的信息定义作为对各指令定义的一个属性。在仿真程序生成单元的协处理器模型文件(=mkcop输入)中,如下所示进行描述。
{mane→‘ICMOV’,
name→‘CMOW_1’,
instType→‘t64c_a1’,
instSubType→‘core_cop’,#<=从协处理器通用寄存器向内核通用寄存器传送
regsbit→‘true’,
opcodeA→‘Oxf’,
opcodeB→‘Ox0’,
opcodeC→‘Ox0’,
opcodeD→‘Ox1’,
func→‘
#动作描述
‘,
}’
动作描述基本上是将变量变换为C++变量,再将运算符一一对应地变换为与之等效的C++运算符而生成。寄存器及存储器的读写及保留函数是调用预先准备的仿真程序的API函数而生成。
对于一部分C++中没有的表现形式,在进行变换为C++之前,将动作描述进行变换。例如式子左边表示的位连接如下所示进行变换。
(变换前)
(A!!B)=Expression;
(变换后)
TMP=Expression;
B=TMP[(B最高位·B最低位·1):0];
A=TMP[(A最高位+B最高位·1):(B最高位·B最低位)];
(TMP为临时变量)
另外,关于SIMD表示,如第5实施形态中所述进行展开。
在跟踪输出中,将利用该动作指令写入值的寄存器输出。对寄存器有无写入是分析该寄存器是否出现在指令动作描述的左边部分而进行判断。寄存器之间的数据传送也同样,将左边部分出现的寄存器判断为写入用寄存器,将右边部分出现的寄存器判断为读出用寄存器。认为数据从读出的寄存器向写入的寄存器传送。
根据上述第11实施形态,能够按照配置指定文件的描述生成所需要的仿真程序。因而,用户能够对应用程序进行仿真,能够短时间内知道应用程序的性能。所以,能够缩短片上系统的开发周期。
(第12实施形态)
第12实施形态是有关调试环境的构筑。
调试环境构筑用的对应项目有下列三个。
(1)寄存器定义:
调试程序对于作为能显示及重写的寄存器需要是什么样的寄存器的信息。该信息由配置指定文件的寄存器定义单元生成。能够显示的寄存器是定义的全部寄存器。能够重写的寄存器工寄存器的字段(寄存器的一部分)是在图14所示的寄存器定义中,例如描述为“rw”的寄存器。描述为“r”的寄存器不能用调试程序重写。
(2)反汇编程序
调试程序对执行程序进行反汇编并加以表示。反汇编程序采用与仿真程序的译码单元相同的方法识别指令,并显示其助记符。
(3)调试监控程序
调试监控程序在调试开始时设定寄存器的初始值。从配置指定文件的寄存器定义单元得到要设定该初期值的寄存器(存在的寄存器)的信息。
根据上述第12实施形态,由配置指定文件构筑调试环境。因此,用户能够得到LSI开发所需要的调试环境。因而,用户能够对应用程序进行调试,能够缩短应用程序的开发周期。
另外,本发明不限定于上述各实施形态。
图37所示为采用上述各实施形态的片上系统开发环境生成装置的概貌。该片上系统开发环境生成装置50包含所谓通用计算机、工作站、PC(PersonalComputer,个人计算机)及NC(Network Computer)等。片上系统开发环境生成装置50具有未图示的硬盘装置50a。
再有,片上系统开发环境生成装置50具有例如软盘驱动器52及光盘驱动器54。在软盘驱动器52中装有软盘53,在光盘驱动器54中装有光盘55。
另外,与片上系统开发环境生成装置50连接的驱动装置57是例如存储卡58的读写器或磁带盒59的读写器。利用该驱动装置57,能够访问存储卡58或磁带盒59。
前述的命令解释程序、RTL生成单元、仿真程序定制单元、编译程序定制单元、汇编程序定制单元、验证向量生成单元及调试程序生成单元等程序、及配置指定文件等文件存储在软盘53、光盘55、存储卡58及磁带盒59等记录媒体。通过读出这些程序及文件,装入前述硬盘装置50,就能够执行上述的动作。另外,也可以采用传输媒体作为记录媒体。
对于本专业中熟练的人员来说可容易地想到附加的优点和修改。因此在更宽的范围内本发明不受限于这里示明的和描述的具体细节和有代表性的实施例。因此,可做各种修改而不偏离如所附权利要求和其等效内容所定义的一般发明概念的精神或范围。
Claims (58)
1.一种使用片上系统开发装置生成用来开发片上系统的开发环境的方法,所述片上系统开发装置包括编译程序定制单元、汇编程序定制单元以及仿真程序定制单元,其特征在于,所述方法包括:
解析输入的命令;
对应于被解析的所述命令,根据描述片上系统的配置的配置指定文件的信息,
所述编译程序定制单元构筑编译程序,所述编译程序用于开发与所述配置指定文件相对应的片上系统,
所述汇编程序定制单元构筑与所述配置指定文件相对应的汇编程序,
所述仿真程序定制单元构筑与所述配置指定文件相对应的仿真程序;
其中,所述配置指定文件指定执行指令的硬件。
2.如权利要求1所述的方法,其特征在于,
所述配置指定文件包含定义寄存器构成的寄存器定义。
3.如权利要求2所述的方法,其特征在于,
仅能汇编寄存器定义内描述的寄存器。
4.如权利要求2所述的方法,其特征在于,
仅能仿真寄存器定义内描述的寄存器,并将寄存器名反映到仿真结果的跟踪输出上。
5.如权利要求2所述的方法,其特征在于,
仅能汇编寄存器定义内描述的寄存器,并显示在窗口上。
6.如权利要求2所述的方法,其特征在于,
生成用寄存器定义中描述的寄存器的验证向量。
7.如权利要求2所述的方法,其特征在于,
所述寄存器定义具有所述编译程序中的寄存器利用方法的信息。
8.如权利要求7所述的方法,其特征在于,
所述寄存器利用方法具有函数的返回值用寄存器的信息。
9.如权利要求7所述的方法,其特征在于,
所述寄存器利用方法具有自变量用寄存器的信息。
10.如权利要求7所述的方法,其特征在于,
所述寄存器利用方法具有利用函数调用跨过函数的寄存器的信息。
11.如权利要求7所述的方法,其特征在于,
所述寄存器利用方法具有利用函数调用在函数内被破坏的寄存器的信息。
12.如权利要求2所述的方法,其特征在于,
所述寄存器定义具有定义所述编译程序中的寄存器使用方法的信息,在省略该信息时,所述编译程序定制单元设定编译程序缺省的寄存器使用方法。
13.如权利要求2所述的方法,其特征在于,
所述编译程序定制单元根据所述寄存器定义的信息,生成对各寄存器能够直接访问的寄存器伪变量的信息。
14.如权利要求2所述的方法,其特征在于,
所述寄存器定义具有寄存器的别名定义,所述寄存器的别名定义提供给所述汇编程序定制单元。
15.如权利要求1所述的方法,其特征在于,还包括
所述开发环境还包含RTL生成单元、验证向量生成单元及调试程序生成单元中的至少一个单元。
16.如权利要求15所述的方法,其特征在于,
所述寄存器定义包含寄存器名,并将该寄存器名提供给编译程序定制单元、汇编程序定制单元以及仿真程序生成单元中的至少一个单元。
17.如权利要求16所述的方法,其特征在于,
用仿真程序或调试程序显示所述寄存器名。
18.如权利要求15所述的方法,其特征在于,
所述寄存器定义包含寄存器名,并将该寄存器名提供给所述RTL生成单元、验证向量生成单元及调试程序生成单元中的至少一个单元。
19.如权利要求2所述的方法,其特征在于,
所述配置指定文件包含指令的记忆码、操作数代码及动作内容。
20.如权利要求2所述的方法,其特征在于,
所述编译程序定制单元根据所述指令定义单元的信息,生成机器指令函数定义。
21.如权利要求1所述的方法,其特征在于,
所述配置指定文件包含处理器是VLIW型、硬件指定包含VLIW的指令槽形式的指定。
22.如权利要求21所述的方法,其特征在于,
所述配置指定文件包含在使指令并行时区别置于哪一个槽的指令用的槽定义。
23.如权利要求21所述的方法,其特征在于,
所述配置指定文件将在使指令并行时使用的槽信息提供给编译程序定制单元、并反映在机器指令函数定义中。
24.如权利要求21所述的方法,其特征在于,
根据处理器的性能指标,指定指令会动作描述内的临时变量及符号扩展后的值的位宽度,将该信息提供给仿真程序定制单元,在所述仿真程序定制单元构筑编译程序,所述汇编程序定制单元构筑汇编程序,所述仿真程序生成单元构筑仿真程序。
25.如权利要求21所述的方法,其特征在于
所述槽信息提供给汇编程序定制单元,在所述汇编程序中反映。
26.如权利要求21所述的方法,其特征在于
所述槽信息提供给所述验证向量定制单元,在所述验证向量中反映。
27.如权利要求1所述的方法,其特征在于
所述硬件指定包含DSP指令形式的描述。
28.如权利要求27所述的方法,其特征在于,
所述配置指定文件包含指定任意位宽度的指令的信息。
29.如权利要求27所述的方法,其特征在于,
所述配置指定文件包含定义任意位宽度的寄存器的信息。
30.如权利要求27所述的方法,其特征在于,
所述配置指定文件包含指定固定小数点库的小数点位置的信息,所述编译程序定制单元将该信息反映到编译程序的固定小数点运行时间程序调用指令生成单元。
31.如权利要求27所述的方法,其特征在于,
所述配置指定文件在处理器为DSP型时,包含与所述编译程序的DSP对应的功能。
32.如权利要求31所述的方法,其特征在于,
所述编译程序定制单元在DSP型处理器具有固定小数点运算命令时,定制成编译程序生成固定小数点运算命令,在不具有固定小数点运算命令时,定制成编译器生成固定小数点运算用运行时间程序。
33.如权利要求31所述的方法,其特征在于,
与所述编译程序的DSP对应的功能包含复数数据型、X/Y存储器空间、循环缓冲器、固定小数点数据型、位反转、不同种类寄存器组中的至少一种功能。
34.如权利要求1所述的方法,其特征在于,
所述硬件指定包含用SIMD指令形式的描述。
35.如权利要求34所述的方法,其特征在于,
所述编译程序定制单元根据输入的SIMD指令有关的信息,生成SIMD型指定修饰词的信息。
36.如权利要求34所述的方法,其特征在于,
所述编译程序定制单元根据输入的SIMD指令有关的信息,生成特殊数据型的信息。
37.如权利要求34所述的方法,其特征在于,
所述仿真程序定制单元根据输入的SIMD指令有关的信息,定制仿真程序的动作。
38.如权利要求34所述的方法,其特征在于,
所述仿真程序定制单元根据输入的SIMD指令有关的信息,定制仿真程序的结果输出功能。
39.如权利要求34所述的方法,其特征在于,
所述SIMD指令的动作描述是将多个指令汇总用一个指令描述。
40.如权利要求34所述的方法,其特征在于,
所述SIMD指令的动作描述是用变址进行描述。
41.如权利要求34所述的方法,其特征在于,包括
从包含已经定义的多个指令的多个指令库选择所需要的指令。
将这些选择的指令合并,生成与应用程序对应的开发环境,所述开发环境包含构筑编译程序的编译程序定制单元、构筑汇编程序的汇编程序定制单元、以及构筑仿真程序的仿真程序生成单元。
42.如权利要求41所述的方法,其特征在于,还包括
所述多个指令库选择所需要的指令后,对每个所述指令库生成中间库,再将这些中间库合度。
43.如权利要求41所述的方法,其特征在于,还包括
从所述攀个指令库选择所需要的指令后,对每个所述指令库生成中间库,再将这些中间库与基本指令的中间库合度。
44.如权利要求41所述的方法,其特征在于,
所述指令库内的指令能够选择所述指令所用的数据类型。
45.如权利要求41所述的方法,其特征在于,
所述指令库内的指令能够改变所述指令所用的数据类型。
46.如权利要求41所述的方法,其特征在于,
所述配置指定文件包含高位描述。
47.如权利要求41所述的方法,其特征在于,
所述高位描述至少包含对位连接、部分位取出、函数形式、符号的强制性运算符、临时变量及溢出的动作描述。
48.如权利要求41所述的方法,其特征在于,
所述高位描述也可以在式子左边描述位连接。
49.如权利要求41所述的方法,其特征在于,
所述配置指定议论抱含流水线定义的描述。
50.如权利要求49所述的方法,其特征在于,
所述流水线定义的描述包含流水线线型的定义。
51.如权利要求49所述的方法,其特征在于,
所述流水线定义的描述包含冒险信息。
52.如权利要求34所述的方法,其特征在于,
所述配置指定文件包含关于流水线的编译程序用的命令调度信息。
53.如权利要求34所述的方法,其特征在于,
所述配置指定文件包含关于流水线的冒险验证向量生成用的描述。
54.如权利要求34所述的方法,其特征在于,包括
对输入的命令进行分析,
由所述高位描述生成RTL。
55.如权利要求54所述的方法,其特征在于,
所述RTL生成单元包含硬件资源分配和调度单元、使内核单元及控制路径与存储器的接口匹配的接口匹配单元、以及将C语言变为Verilog的变换单元中的至少一个单元。
56.如权利要求55所述的方法,其特征在于,
所述接口匹配单元根据所述动作指令进行硬件资源分配及调度,使内核单元及控制总线与存储器的接口匹配,生成RTL。
57.一种使用片上系统开发装置生成用来开发片上系统的开发环境的方法,所述片上系统开发装置包括编译程序定制单元、汇编程序定制单元、仿真程序定制单元以及验证向量生成单元,其特征在于,所述方法包括:
解析输入的命令;
对应于被解析的所述命令,根据描述片上系统的配置的配置指定文件的信息,
所述编译程序定制单元构筑编译程序,所述编译程序用于开发与所述配置指定文件相对应的片上系统,
所述汇编程序定制单元构筑与所述配置指定文件相对应的汇编程序,
所述仿真程序定制单元构筑与所述配置指定文件相对应的仿真程序;
其中,所述配置指定文件指定执行指令的硬件,所述验证向量生成单元根据所述配置指定文件的指令的动作定义,生成处理器的验证向量。
58.如权利要求57所述的方法,其特征在于,
所述验证向量生成单元根据所述配置指定文件的寄存器信息,生成ISA信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002127381A JP4202673B2 (ja) | 2002-04-26 | 2002-04-26 | システムlsi開発環境生成方法及びそのプログラム |
JP2002127381 | 2002-04-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1453699A CN1453699A (zh) | 2003-11-05 |
CN100338568C true CN100338568C (zh) | 2007-09-19 |
Family
ID=28786839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021482489A Expired - Fee Related CN100338568C (zh) | 2002-04-26 | 2002-10-31 | 开发片上系统用的开发环境的生成方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7168060B2 (zh) |
EP (1) | EP1357485A3 (zh) |
JP (1) | JP4202673B2 (zh) |
KR (1) | KR100533307B1 (zh) |
CN (1) | CN100338568C (zh) |
TW (1) | TW571237B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0215033D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Instruction set translation method |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
AU2003256870A1 (en) * | 2002-08-09 | 2004-02-25 | Intel Corporation | Multimedia coprocessor control mechanism including alignment or broadcast instructions |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US7302380B2 (en) * | 2002-12-12 | 2007-11-27 | Matsushita Electric, Industrial Co., Ltd. | Simulation apparatus, method and program |
US6986110B1 (en) * | 2003-01-02 | 2006-01-10 | Hewlett-Packard Development Company, L.P. | Automated method and system for backtracing of instruction parameters from specified instruction in test cases |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US7675509B2 (en) * | 2005-01-13 | 2010-03-09 | Sony Corporation | Methods and apparatus for optical wireless communication |
KR100638476B1 (ko) * | 2004-12-22 | 2006-10-26 | 삼성전자주식회사 | 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법 |
JP2006243839A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
JP2006243838A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
CN100468327C (zh) * | 2005-11-10 | 2009-03-11 | 鸿富锦精密工业(深圳)有限公司 | 量测程序生成系统及方法 |
US7836435B2 (en) * | 2006-03-31 | 2010-11-16 | Intel Corporation | Checking for memory access collisions in a multi-processor architecture |
JP2007310565A (ja) | 2006-05-17 | 2007-11-29 | Toshiba Corp | システムlsi検証装置及びシステムlsi検証プログラム |
US7486096B2 (en) * | 2006-10-31 | 2009-02-03 | International Business Machines Corporation | Method and apparatus for testing to determine minimum operating voltages in electronic devices |
US8935512B2 (en) | 2006-11-21 | 2015-01-13 | Nec Corporation | Instruction operation code generation system |
US7809925B2 (en) * | 2007-12-07 | 2010-10-05 | International Business Machines Corporation | Processing unit incorporating vectorizable execution unit |
JP5116624B2 (ja) * | 2008-09-29 | 2013-01-09 | ルネサスエレクトロニクス株式会社 | シミュレーション装置及びシミュレーション方法 |
JP2010160622A (ja) * | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
KR101603202B1 (ko) * | 2009-09-21 | 2016-03-14 | 삼성전자주식회사 | 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치 |
US20110137922A1 (en) * | 2009-12-07 | 2011-06-09 | International Business Machines Corporation | Automatic generation of a query lineage |
US20110173601A1 (en) * | 2010-01-12 | 2011-07-14 | Google Inc. | Operating system auto-update procedure |
US8370784B2 (en) * | 2010-07-13 | 2013-02-05 | Algotochip Corporation | Automatic optimal integrated circuit generator from algorithms and specification |
US8423929B2 (en) | 2010-10-18 | 2013-04-16 | Algotochip Corp. | Intelligent architecture creator |
KR20120077164A (ko) | 2010-12-30 | 2012-07-10 | 삼성전자주식회사 | Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법 |
US20120185820A1 (en) * | 2011-01-19 | 2012-07-19 | Suresh Kadiyala | Tool generator |
US20130290693A1 (en) * | 2012-04-27 | 2013-10-31 | Esencia Technologies Inc. | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core |
US9734263B2 (en) * | 2012-12-20 | 2017-08-15 | Intel Corporation | Method and apparatus for efficient pre-silicon debug |
US9244683B2 (en) * | 2013-02-26 | 2016-01-26 | Nvidia Corporation | System, method, and computer program product for implementing large integer operations on a graphics processing unit |
JP6214455B2 (ja) * | 2014-04-11 | 2017-10-18 | 三菱電機株式会社 | 命令テーブル生成装置、命令デコードプログラム生成装置、命令テーブル生成方法、命令デコードプログラム生成方法、およびプログラム |
US9747084B2 (en) * | 2014-09-09 | 2017-08-29 | Google Inc. | Offline shader compilation |
CN104965687B (zh) * | 2015-06-04 | 2017-12-08 | 北京东方国信科技股份有限公司 | 基于指令集生成的大数据处理方法及装置 |
GB2554096B (en) * | 2016-09-20 | 2019-03-20 | Advanced Risc Mach Ltd | Handling of inter-element address hazards for vector instructions |
WO2020068988A1 (en) * | 2018-09-25 | 2020-04-02 | Synopsys, Inc. | Hardware simulation systems and methods for identifying state-holding loops and oscillating loops |
JP7024679B2 (ja) * | 2018-10-05 | 2022-02-24 | オムロン株式会社 | 開発支援プログラム、開発支援装置、および開発支援方法 |
CN111400979A (zh) * | 2020-03-24 | 2020-07-10 | 杭州博雅鸿图视频技术有限公司 | Soc的仿真方法、系统、电子设备及存储介质 |
CN111522583A (zh) * | 2020-04-08 | 2020-08-11 | 芯海科技(深圳)股份有限公司 | 一种生成配置文件的方法、装置、计算机设备及存储介质 |
CN111913097B (zh) * | 2020-08-26 | 2022-11-29 | 西安微电子技术研究所 | 一种用于测试SoC功能的测试电路、测试方法和SoC |
CN112100954B (zh) * | 2020-08-31 | 2024-07-09 | 北京百度网讯科技有限公司 | 验证芯片的方法、装置和计算机存储介质 |
CN112486906B (zh) * | 2020-12-18 | 2024-06-11 | 清华大学 | 格式化的可重构处理器汇编指令处理方法及装置 |
TWI764581B (zh) * | 2021-02-22 | 2022-05-11 | 群聯電子股份有限公司 | 記憶體檢查方法、記憶體檢查裝置及記憶體檢查系統 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998025203A1 (en) * | 1996-12-06 | 1998-06-11 | Jba Holdings Plc | Data processing system and method |
WO2001061576A2 (en) * | 2000-02-17 | 2001-08-23 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623684A (en) * | 1994-05-17 | 1997-04-22 | Commquest Technologies, Inc. | Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing |
JP2869379B2 (ja) * | 1996-03-15 | 1999-03-10 | 三菱電機株式会社 | プロセッサ合成システム及びプロセッサ合成方法 |
JPH10222548A (ja) * | 1997-02-05 | 1998-08-21 | Hitachi Ltd | 設計支援方法 |
US6112018A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Apparatus for exchanging two stack registers |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
WO2000046704A2 (en) * | 1999-02-05 | 2000-08-10 | Tensilica, Inc. | Automated processor generation system and method for designing a configurable processor |
JP2001249826A (ja) * | 2000-03-03 | 2001-09-14 | Rooran:Kk | システムlsi開発支援システムとその開発支援用プログラムを記録した記録媒体 |
US20010025363A1 (en) * | 2000-03-24 | 2001-09-27 | Cary Ussery | Designer configurable multi-processor system |
JP2002230065A (ja) * | 2001-02-02 | 2002-08-16 | Toshiba Corp | システムlsi開発装置およびシステムlsi開発方法 |
JP3764405B2 (ja) * | 2002-05-27 | 2006-04-05 | 株式会社東芝 | デバッグ装置及びデバッグ方法 |
JP2006243839A (ja) | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
-
2002
- 2002-04-26 JP JP2002127381A patent/JP4202673B2/ja not_active Expired - Lifetime
- 2002-07-19 US US10/197,891 patent/US7168060B2/en not_active Expired - Fee Related
- 2002-07-25 EP EP02016338A patent/EP1357485A3/en not_active Withdrawn
- 2002-10-15 TW TW091123691A patent/TW571237B/zh not_active IP Right Cessation
- 2002-10-30 KR KR10-2002-0066498A patent/KR100533307B1/ko not_active IP Right Cessation
- 2002-10-31 CN CNB021482489A patent/CN100338568C/zh not_active Expired - Fee Related
-
2006
- 2006-11-06 US US11/556,817 patent/US20070061763A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998025203A1 (en) * | 1996-12-06 | 1998-06-11 | Jba Holdings Plc | Data processing system and method |
WO2001061576A2 (en) * | 2000-02-17 | 2001-08-23 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
Also Published As
Publication number | Publication date |
---|---|
US20070061763A1 (en) | 2007-03-15 |
EP1357485A2 (en) | 2003-10-29 |
CN1453699A (zh) | 2003-11-05 |
TW571237B (en) | 2004-01-11 |
US7168060B2 (en) | 2007-01-23 |
KR20030084554A (ko) | 2003-11-01 |
US20030204819A1 (en) | 2003-10-30 |
JP2003323463A (ja) | 2003-11-14 |
EP1357485A3 (en) | 2008-10-22 |
JP4202673B2 (ja) | 2008-12-24 |
KR100533307B1 (ko) | 2005-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100338568C (zh) | 开发片上系统用的开发环境的生成方法 | |
CN1130626C (zh) | 支援并行程序的装置以及支持程序编制的方法 | |
CN1288585C (zh) | 用于设计可配置处理器的自动处理器生成系统及方法 | |
CN1666202A (zh) | 管理集成电路设计的装置和方法 | |
CN1308818C (zh) | 用于结构仿真的系统 | |
CN1472646A (zh) | 适应性强具备最佳化功能的编译装置 | |
CN1135468C (zh) | 对存储设备中信号数据字执行数字信号处理的方法和装置 | |
CN1027198C (zh) | 计算装置 | |
CN1186718C (zh) | 微控制器指令集 | |
CN1875345A (zh) | 在编译过程中表示和检查程序组件的一致性的可扩展类型系统 | |
CN1482540A (zh) | 编译程序、编译程序装置和编译方法 | |
CN1073540A (zh) | 管理类方法名 | |
CN1126030C (zh) | 数据处理装置 | |
CN1768275A (zh) | 测试摸拟装置、测试模组模拟装置以及记录此程式的记录媒体 | |
CN1605058A (zh) | 关于嵌入式字段可编程门阵列核心的接口结构 | |
CN1641607A (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN1497435A (zh) | 处理器 | |
CN1479904A (zh) | 利用有向无环图配置产品的方法 | |
CN1910601A (zh) | 限制条件解决方法、限制条件解决装置、以及限制条件解决系统 | |
CN1744036A (zh) | 报告软件中支持定制图形表示的系统和方法 | |
CN1885295A (zh) | 使用逻辑单元建置集成电路 | |
CN1664779A (zh) | 软件开发基础架构 | |
CN1609856A (zh) | 查询中间语言的方法和系统 | |
CN1564136A (zh) | 基于目标机上的ejtag部件的交叉调试器实现方法 | |
CN1273893C (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070919 Termination date: 20101031 |