CN108319459B - 一种行为级描述到rtl描述的ccc编译器 - Google Patents
一种行为级描述到rtl描述的ccc编译器 Download PDFInfo
- Publication number
- CN108319459B CN108319459B CN201810144987.2A CN201810144987A CN108319459B CN 108319459 B CN108319459 B CN 108319459B CN 201810144987 A CN201810144987 A CN 201810144987A CN 108319459 B CN108319459 B CN 108319459B
- Authority
- CN
- China
- Prior art keywords
- ccc
- output submodule
- rtl
- description
- module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种行为级描述到RTL描述的CCC编译器,包括CCC输出子模块A、CCC输出子模块B和CCC输出子模块C,所述行为级描述采用C语言描述,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C用于将C语言描述转换为RTL描述,所述CCC输出子模块A中包含进程1和进程2,所述CCC输出子模块B中包含进程3,所述进程2通过内存访问函数与外部内存模块连接,所述CCC输出子模块C中包含接口函数和共享接口函数,所述进程1与接口函数接线连接,所述进程2、进程3均与共享接口函数接线连接。能够直接将行为级描述映射为RTL描述,降低工作量,避免出错,缩短开发周期。
Description
技术领域
本发明涉及一种行为级描述到RTL描述的CCC编译器。
背景技术
数字电路的设计过程为:Idea-行为级描述-RTL描述-门级网标(netlist)-物理版图(layout),RTL为Register Transfer Level的缩写,RTL描述指的是用寄存器这一级别的描述方式来描述电路的数据流方式,描述更详细,并且从寄存器的角度把数据的处理过程表达出来,可以容易地被综合工具综合成电路的形式。行为级是RTL的上一层,行为级是最符合人类逻辑思维方式的描述角度,一般基于算法,用C/C++来描述,行为级的描述更多的是采取直接赋值的形式,只能看出结果,看不出数据流的实际处理过程,其中又大量采用算术运算,延迟等一些无法综合的语句,常常只用于验证仿真。从行为级到RTL的转换,传统都是由IC设计人员手工翻译,但是这个过程繁琐,工作量很大,特别是随着数字系统的复杂性提升,这样的纯手工“翻译”过程容易出错,且使得开发周期变长。
发明内容
本发明所要解决的技术问题在于提供一种行为级描述到RTL描述的CCC编译器,能够直接将行为级描述映射为RTL描述,降低工作量,避免出错,缩短开发周期。
为解决上述现有的技术问题,本发明采用如下方案:一种行为级描述到RTL描述的CCC编译器,包括CCC输出子模块A、CCC输出子模块B和CCC输出子模块C,所述行为级描述采用C语言描述,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C用于将C语言描述转换为RTL描述,所述CCC输出子模块A中包含进程1和进程2,所述CCC输出子模块B中包含进程3,所述进程2通过内存访问函数与外部内存模块连接,所述CCC输出子模块C中包含接口函数和共享接口函数,所述进程1与接口函数接线连接,所述进程2、进程3均与共享接口函数接线连接,所述进程2与进程3通过共享内存连接,所述进程3上连接有全局变量,所述进程2连接在全局变量上,所述接口函数通过外部第三方接口函数与外部其他模块连接。
进一步的,还包括内嵌第三方模块,所述内嵌第三方模块通过内嵌第三方接口函数连接在进程3上,所述进程3上还连接有内嵌第三方内存模块,所述进程3通过静态内存访问函数连接内嵌第三方内存模块,通过非静态内嵌第三方接口函数连接内嵌第三方模块。
进一步的,上述连接均通过I/O端口连接,CCC编译器上还设有针脚,所述端口或针脚通过接口函数定义。
进一步的,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将每个C语言描述文件编译成单独的RTL模块,然后将所有独立的RTL模块连接在一起,产生完整的RTL设计,生成RTL代码描述。
进一步的,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将C语言描述转换SystemC进行验证,进行时序验证后再产生相同时序的RTL描述。
有益效果:
本发明采用上述技术方案提供一种行为级描述到RTL描述的CCC编译器,能够直接将行为级描述映射为RTL描述,降低工作量,避免出错,缩短开发周期。
附图说明
图1为本发明的结构示意图。
具体实施方式
如图1所示,一种行为级描述到RTL描述的CCC编译器,包括CCC输出子模块A、CCC输出子模块B和CCC输出子模块C,所述行为级描述采用C语言描述,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C用于将C语言描述转换为RTL描述,所述CCC输出子模块A中包含进程1和进程2,所述CCC输出子模块B中包含进程3,所述进程2通过内存访问函数与外部内存模块连接,所述CCC输出子模块C中包含接口函数和共享接口函数,所述进程1与接口函数接线连接,所述进程2、进程3均与共享接口函数接线连接,所述进程2与进程3通过共享内存连接,所述进程3上连接有全局变量,所述进程2连接在全局变量上,所述接口函数通过外部第三方接口函数与外部其他模块连接。还包括内嵌第三方模块,所述内嵌第三方模块通过内嵌第三方接口函数连接在进程3上,所述进程3上还连接有内嵌第三方内存模块,所述进程3通过静态内存访问函数连接内嵌第三方内存模块,通过非静态内嵌第三方接口函数连接内嵌第三方模块。上述连接均通过I/O端口连接,CCC编译器上还设有针脚,所述端口或针脚通过接口函数定义。所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将每个C语言描述文件编译成单独的RTL模块,然后将所有独立的RTL模块连接在一起,产生完整的RTL设计,生成RTL代码描述。所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将C语言描述转换SystemC进行验证,进行时序验证后再产生相同时序的RTL描述。
采用上述结构可以进行以下转换:C文件转换为RTL模块;进程、简单接口函数和共享接口函数的指令转换为顺序和/或组合逻辑;内嵌第三方接口函数的指令被转换为片上的内嵌模块;访问函数调用第三方模块而且由编译器自动调用;外部第三方接口函数的指令转换为从原生模块到外部模块的连接;所有形式的接口函数的形参都转换为模块上的I/O端口;当一个模块中的进程调用另一个模块中的接口函数时,将在调用模块上创建I/O端口;外部内存访问函数和自定义内存访问函数的指令转换为对应内存的路径;全局变量访问通过端口;共享接口与访问函数通常产生竞争,需自动或手动产生仲裁电路;在编译器的链接器阶段,所有模块的I/O端口都连接在一起以完成端口连接。
复杂的硬件设计将包含许多自治的有限状态机(FSM),FSM通常等待输入,通过一系列状态处理输入,并产生一些输出,它将永远重复这个输入-进程-输出周期。代码重构c代码的一个重要组成部分是进程,它是使用,"ccc_process",属性指定为CCC进程的c函数,当由编译器产出硬件模块时,一个进程(即定义为ccc_process的C函数)将成为FSM,代码重构C程序的一个重要任务是确定代码的哪些部分应该转换成进程,从而变成FSM。如果代码已经是多线程的,那么显而易见的事情是将线程转换为CCC进程;如果代码是单线程的,则应标识可从并发运行中受益的代码部分,并将这些部分转换为进程并在原生C环境中进行测试。进程在原生C环境中对应为线程,在证明新的并发代码在原生环境中正确执行后,可以使用CCC编译器进行编译以生成Verilog RTL。
当多个进程并发时,需要在它们之间进行仲裁,以便在它们试图同时访问变量时获得正确的结果。如果代码已经是多线程的,则仲裁已经实现,必须确保仲裁机制符合CCC编译器要求。如果原始代码是单线程的,则必须加上仲裁以确保正确性。新的多线程和仲裁代码应该在原生C环境中运行,以验证它是否产生正确的结果,然后使用CCC编译器对其进行代码重构和编译以生成RTL。
在硬件域中,存储比在原生C环境中更复杂。在原生环境中,所有C变量都驻留在公共内存中,原生编译器为每个变量分配一个唯一的地址。在硬件方面,有两种类型的存储、触发器存储(flip-flop)和内存,并且可以有多个内存,触发器存储是任意访问的,速度快,但不是可寻址的。相比之下,内存具有n字,从0到n-1,表示此内存中某个位置的地址,多个私有内存有各自地址空间;每个从地址0开始,不同的变量在不同的内存中可以有相同的地址。
C函数在CCC编译器中普通函数默认是内联函数,即在RTL硬件逻辑中用内联函数体替换对函数的每个调用。“普通函数”是任何没有用CCC编译器指令特别标注的函数。
接口函数通常用于在模块之间构造连接,以便从一个文件(模块)访问另一个C文件(模块)中的函数。编译器必须能够在调用模块和被调用模块上创建端口,并且还必须创建从变量到端口的连接。最后CCC的链接器(linker)必须在两个模块的端口之间创建连接(导线)。
简单接口函数也称为常规接口函数、普通接口函数,将函数的功能暴露给另一个模块调用。一个简单的接口函数是用编译器指令ccc_interface来标注的普通C函数,它指示ccc将函数连接到模块边界上的I/O端口,并创建函数体的逻辑。默认情况下,函数的形参成为输入端口,以便其他模块中的调用可以通过信号接口将值传递给函数,并且返回值成为输出端口,以便该函数可以将值传递回调用者。对接口函数的调用是同步的,即调用进程被阻塞,直到接口函数返回,CCC自动在两个模块之间创建一个呼叫信号和一个完成信号来创建此同步,因为接口函数调用是同步的,原则上接口函数设计应该小而快。
共享接口函数适用于有多个接口函数调用者,并且会并发。共享接口函数就是在普通接口函数的基础上额外加上ccc_shared指令.CCC在创建一个共享接口功能时是在普通接口前面加上处理并发的仲裁员,仲裁员为每个调用进程都设置了一组I/O端口,如果并发发生,则仲裁员会选择谁先调用并将结果返回所选调用方的I/O端口。
外部函数(或模块)由第三方提供,可用于实现特定功能,而不是自有逻辑部分。外部函数可以分为内嵌或片外的,在这两种情况下,我们都必须定义外部模块的信号接口,以便将它与原生模块连接起来。与常规和共享接口函数不同,不能期望外部函数返回值,因此将void指定为返回类型。
一个嵌入式外部接口函数(模块)是由CCC产生一个函数定义的模块实例化,它是一个C函数加上指令ccc_foreign,ccc_interface。由于该函数已由外部模块实现,因此没有函数体;调用时,它的参数或信令必须按照第三方的使用说明。嵌入外部接口函数调用者会在瞬间对接口进行采样,调用者的输入和输出参数将被同步到外部模块的信号中,即输入参数被复制到输入信号上,输出信号被复制到输出参数上。输出参数必须是指向应接收输出信号值的调用方变量的指针。从概念上讲,嵌入式外部接口函数(模块)是调用的原生模块的一部分,函数被调用是它有别于片外接口函数的区别,片外接口函数不用显式调用。
片外接口函数是外部接口函数的另一种,一是用来定义片外模块的端口,这样原生模块可以通过接口与片外的模块进行交互;二也可以用来定义CCC原生设计模块的对外端口,这样原生IP的用户知道怎样使用CCC设计的模块。片外接口函数(必须是非静态的)与原生模块的交互是通过连续复制原生模块内的静态变量与接口函数上的I/O端口之间的值,将输入引脚复制到输入变量以及输出变量;所以片外接口函数不会发生显式调用。
CCC定义了内存模型,这样使多种类型的内存集成到设计中很容易。该模型定义了一组标准的接口信号及计时,对于CCC来说已知计时的称之为一致性内存,而不一致性内存可以通过提供内存访问函数适配该模型;在这种情况下,内存访问函数的调用握手信令取代标准计时模型,内存访问函数是添加了CCC指令的C函数。
C地址是字节地址,而内存寻址必先是找到字地址,然后找到字中的偏移量;CCC编译器必须将C地址转换为字地址,这取决于所创建字的大小是标准的或不规则的;标准是指字长为2的次方,例如1,2,4或8个字节的字长,不规则的内存的字大小是2次方之外的,如3个字节,11个比特字长。
CCC编译器以一致的方式映射C地址和内存地址,内存字地址是从C地址如下获得:memoryAddress=floor(C-address/memoryByteWidth),其中字长字节数是:memoryByteWidth=wordSize/8。
例如一个wordsize(字的比特数)32位字,memoryByteWidth字长为4字节。因此,对于一个4字节字长的内存,如果C-地址是0,1,2,3,4,5,6,7,那么内存字地址是0,0,0,0,1,1,1,1...;对于一个八个字节字长的内存,上述C字节地址在内存中字地址都是0。
对于不规则字长的内存,字中的字节数memoryByteWidth是:
memoryByteWidth=NearestPowerOf2(Ceiling(wordSize/8))
例如,11个比特的字,天花板是2,最近的2的次方也是2,所以memoryByteWidth是2。33个比特的字,天花板5,最近的2的次方是8,所以memoryByteWidth是8。
全局变量是C中在任何函数之外声明的变量,而且可以从文件中的任何地方以及任何其他文件访问。若要从另一个文件访问一个文件中的全局变量,它必须在访问文件中申明EXTERN,告诉编译器该变量是在其他地方声明的。静态变量在某些情况下,我们希望变量只在声明的文件中可以访问,但不能从其他文件访问,在这种情况下,变量声明可以被标记为静态的。
在CCC环境中,全局变量与C中的相同。因为多个进程可能会并发访问变量,必须有同步机制。CCC采取Daisy Chain来实现基于触发器的全局变量的硬件结构。
对于驻留在内存(共享内存)中的全局变量,编译器对内存进行分区,使得全局变量首先被放置,然后是每个模块的专有变量。通过使用每个模块的基地址变量来防止专有变量的内存分区重叠。既然所有的全局变量放入内存的第一个分区,全局变量的申明必须在任何模块的专有变量之前,这可以通过把所有全局变量的外部声明在一个头文件中的来实现,然后需要访问全局变量的模块包含这个头文件而且必须包含在模块中的任何专有变量定义之前。全局变量在内存中以绝对偏移量0开始,访问全局变量的偏移量是一个绝对的偏移量,而模块的专有变量的偏移量为一个相对偏移,访问时要添加基地址变量而转换为绝对偏移量。
多核聚合是同一模块的复制,以便所得到的系统包含多个相同的模块的实例;各复制模块可以同时对不同的数据执行相同的操作,从而实现并行性。数据分发给各模块的任务的调度逻辑也是由CCC自动产生。
CCC编译器有两种不同的方法来执行这个多核聚合:
1.重复编译:
CCC-o module_a的module.c
CCC-o module_b的module.c
CCC-o module_c的module.c
然后通过连接器(linker)聚合多核
CCC-o top.v......(其他模块)...module_a.u module_b.u module_c.u top.v是系统的顶层模块。
1.连接阶段:
编译一次模块-c选项:
CCC-c的module.c
然后连接过程中创建的:
CCC-o top.v...(其他模块)...module_a=module.u module_b=
module.u module_c=module.u
由于Verilog RTL没有浮点类型的支持,通常需要手动转化,浮点支持在CCC编译器中通过两个步骤来实现。
(1)定义数学访问函数,指定要使用的数学访问函数(如加减乘除,整形与浮点之间的转换等),浮点精度(单精度,双精度)与整数大小的配置。
(2)当浮点计算发生,CCC自动调用数学访问函数,数学访问函数的实现通常调用第三方(如Synopsys公司的)浮点计算模块,并把结果传递回给发出请求的模块。
CCC编译器使用IEEE 754单精度和双精度格式的定义。默认情况下,一个单精度标准32位,其中包括1符号位,一个8位指数和23位小数。对于双精度数的IEEE标准是64位,1符号位,一11位指数和52位小数。
第三方模块用于整型和浮点类型之间的转换,典型实现是一个第三方模块用于一种整数型和一种浮点类型之间转换,并且是单向的。由于大量的整数类型(uint1_t到uint64_t中和int1_t到的int64_t)存在,需要转换单元的数目将是异常大。为了解决这种情况,CCC采用两步转换过程。首先,整数转换成一个CCC定义好的固定大小的整数,然后使用第三方模块实现固定大小的整数与浮点类型的转换;反方向也是两步走。
CCC通过以下方法与指令配置“窄”和“宽的固定大小的整数类型:
ccc_narrow_int(位数);
ccc_narrow_uint(位数);
ccc_wide_int(位数);
ccc_wide_uint(位数);
默认“窄”和“宽”的整数是32与64位。
CCC编译器还可以把C代码转换为周期精确的SystemC的能力,这样可以在SystemC环境下除了验证功能,还可以验证时序,然后再用CCC产生相同时序的RTL,使得以产生硬件的时间可以大大降低。产生SystemC模块的功能是通过CCC的选项参数实现。
CCC给核心模块(RTL或SystemC)封装上TLM的接口,使其能够从TLM插槽端口读写。核心模块可以是SystemC或RTL,。在任一情况下,编译器生成一个基于TLM模块,这样可以与其他TLM模块进行集成。
本发明中的CCC为Chipeak C Compiler的缩写,我们将该程序命名为“赤峰C编译程序”,Chipeak C Compiler为“赤峰C编译程序”的英文译文,输入ANSI C代码编译生成Verilog RTL代码,Verilog是一种描述数字系统硬件的语言,模块是Verilog的基本组件,模块可以在四不同的抽象层次上编写:交换机级别、门级别、数据流级别和行为级别。由本发明中的CCC编译器生成的Verilog代码处于数据流级别,这也称为寄存器传输级别,即RTL。CCC编译器将每个C文件编译成单独的Verilog RTL模块,然后将所有独立的Verilog模块连接在一起,产生完整的Verilog设计,生成了RTL代码后,标准的RTL综合工具就可以用来合成一个芯片。CCC编译器可以用来生产不同类型的芯片,包括asic(应用特定集成电路)和fpga(现场可编程门阵列)。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (4)
1.一种行为级描述到RTL描述的CCC编译器,其特征在于:包括CCC输出子模块A、CCC输出子模块B和CCC输出子模块C,所述行为级描述采用C语言描述,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C用于将C语言描述转换为RTL描述,所述CCC输出子模块A中包含进程1和进程2,所述CCC输出子模块B中包含进程3,所述进程2通过内存访问函数与外部内存模块连接,所述CCC输出子模块C中包含接口函数和共享接口函数,所述进程1与接口函数接线连接,所述进程2、进程3均与共享接口函数接线连接,所述进程2与进程3通过共享内存连接,所述进程3上连接有全局变量,所述进程2连接在全局变量上,所述接口函数通过外部第三方接口函数与外部其他模块连接,所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将每个C语言描述文件编译成单独的RTL模块,然后将所有独立的RTL模块连接在一起,产生完整的RTL设计,生成RTL代码描述。
2.根据权利要求1所述的一种行为级描述到RTL描述的CCC编译器,其特征在于:还包括内嵌第三方模块,所述内嵌第三方模块通过内嵌第三方接口函数连接在进程3上,所述进程3上还连接有内嵌第三方内存模块,所述进程3通过静态内存访问函数连接内嵌第三方内存模块,通过非静态内嵌第三方接口函数连接内嵌第三方模块。
3.根据权利要求1或2所述的一种行为级描述到RTL描述的CCC编译器,其特征在于:上述连接均通过I/O端口连接,CCC编译器上还设有针脚,所述端口或针脚通过接口函数定义。
4.根据权利要求1所述的一种行为级描述到RTL描述的CCC编译器,其特征在于:所述CCC输出子模块A、CCC输出子模块B和CCC输出子模块C将C语言描述转换SystemC进行验证,进行时序验证后再产生相同时序的RTL描述。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810144987.2A CN108319459B (zh) | 2018-02-12 | 2018-02-12 | 一种行为级描述到rtl描述的ccc编译器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810144987.2A CN108319459B (zh) | 2018-02-12 | 2018-02-12 | 一种行为级描述到rtl描述的ccc编译器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319459A CN108319459A (zh) | 2018-07-24 |
CN108319459B true CN108319459B (zh) | 2022-04-29 |
Family
ID=62903558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810144987.2A Active CN108319459B (zh) | 2018-02-12 | 2018-02-12 | 一种行为级描述到rtl描述的ccc编译器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108319459B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255272B (zh) * | 2021-06-01 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 语句块封装方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043886A (zh) * | 2010-12-31 | 2011-05-04 | 北京大学深圳研究生院 | 集成电路下层硬件映射方法、数据控制流时序约束方法及装置 |
CN102576314A (zh) * | 2009-07-27 | 2012-07-11 | 先进微装置公司 | 具有横跨多个处理器的数据并行线程之映射处理逻辑 |
CN103077283A (zh) * | 2013-01-16 | 2013-05-01 | 清华大学 | 基于VFI优化的C-to-RTL综合方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9251300B2 (en) * | 2013-10-25 | 2016-02-02 | Altera Corporation | Methods and tools for designing integrated circuits with auto-pipelining capabilities |
-
2018
- 2018-02-12 CN CN201810144987.2A patent/CN108319459B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576314A (zh) * | 2009-07-27 | 2012-07-11 | 先进微装置公司 | 具有横跨多个处理器的数据并行线程之映射处理逻辑 |
CN102043886A (zh) * | 2010-12-31 | 2011-05-04 | 北京大学深圳研究生院 | 集成电路下层硬件映射方法、数据控制流时序约束方法及装置 |
CN103077283A (zh) * | 2013-01-16 | 2013-05-01 | 清华大学 | 基于VFI优化的C-to-RTL综合方法 |
Non-Patent Citations (2)
Title |
---|
Specification, Synthesis, and Simulation of Transactor Processes;Felice Balarin等;《 IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems》;20071010;第1749 - 1762页 * |
基于SystemC和Verilog软硬件协同验证;鲁芳等;《现代电子技术》;20081231(第4期);第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108319459A (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7904850B2 (en) | System and method for converting software to a register transfer (RTL) design | |
Wang et al. | Hardware/software instruction set configurability for system-on-chip processors | |
JP2989518B2 (ja) | 多重プロセッサ・エミュレーション・システム | |
TWI223194B (en) | High performance hybrid processor with configurable execution units | |
US20130144589A1 (en) | Systems and methods for circuit design, synthesis, simulation, and modeling | |
US20050149898A1 (en) | Method and apparatus for managing the configuration and functionality of a semiconductor design | |
WO2002061576A2 (en) | System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architectures | |
JPH10116302A (ja) | 集積回路の設計方法及びそれによって設計された集積回路 | |
TW544603B (en) | Designer configurable multi-processor system | |
US7496869B1 (en) | Method and apparatus for implementing a program language description of a circuit design for an integrated circuit | |
Lennon et al. | A comparative study of chisel for fpga design | |
CN108319459B (zh) | 一种行为级描述到rtl描述的ccc编译器 | |
US7310594B1 (en) | Method and system for designing a multiprocessor | |
WO2022198447A1 (zh) | 一种数字电路的综合方法及综合装置 | |
US8146029B2 (en) | Synthesis of electronic circuits | |
Decaluwe | MyHDL manual | |
Mehler | Digital integrated circuit design using verilog and systemverilog | |
Oussorov et al. | Integration of instruction set simulators into SystemC high level models | |
Tian et al. | Tydi-lang: A language for typed streaming hardware | |
Mahani | Making alive register transfer level and transaction level modeling in Ada | |
Edwards | A finer functional Fibonacci on a fast FPGA | |
Taka et al. | Efficient Approaches for GEMM Acceleration on Leading AI-Optimized FPGAs | |
Woop et al. | HWML: RTL/Structural Hardware Description using ML | |
Séméria et al. | Memory representation and hardware synthesis of C code with pointers and complex data structures | |
Lau et al. | Rapid system-on-a-programmable-chip development and hardware acceleration of ANSI C functions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220408 Address after: 511458 1203, No. 8, Jingang Avenue, Nansha street, Nansha District, Guangzhou, Guangdong Applicant after: Xinfeng Technology (Guangzhou) Co.,Ltd. Address before: 310000 No. 29, Lane 3, Shuguang Road, Xihu District, Hangzhou, Zhejiang Applicant before: Zhang Wei |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |