WO2017154183A1 - 高位合成装置、高位合成方法及び高位合成プログラム - Google Patents
高位合成装置、高位合成方法及び高位合成プログラム Download PDFInfo
- Publication number
- WO2017154183A1 WO2017154183A1 PCT/JP2016/057668 JP2016057668W WO2017154183A1 WO 2017154183 A1 WO2017154183 A1 WO 2017154183A1 JP 2016057668 W JP2016057668 W JP 2016057668W WO 2017154183 A1 WO2017154183 A1 WO 2017154183A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- configuration
- circuit
- unit
- level synthesis
- execution units
- Prior art date
Links
- 230000015572 biosynthetic process Effects 0.000 title claims abstract description 156
- 238000003786 synthesis reaction Methods 0.000 title claims abstract description 146
- 238000001308 synthesis method Methods 0.000 title claims description 6
- 230000003542 behavioural effect Effects 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 84
- 230000008569 process Effects 0.000 claims description 75
- 238000012545 processing Methods 0.000 claims description 51
- 239000000872 buffer Substances 0.000 claims description 44
- 238000004458 analytical method Methods 0.000 claims description 31
- 238000006243 chemical reaction Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 description 36
- 230000015654 memory Effects 0.000 description 20
- 230000006872 improvement Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
Definitions
- the present invention relates to a high-level synthesis apparatus, a high-level synthesis method, and a high-level synthesis program that automatically generate a register transfer level circuit description from an operation description in a programming language.
- Patent Document 1 can optimize each cluster, it does not focus on the architecture between clusters, and there is a problem that an architecture search between clusters cannot be performed.
- An object of the present invention is to perform an architecture design in consideration of a configuration between execution units and a high-level synthesis for realizing the architecture in an architecture design for satisfying non-functional requirements.
- the high-level synthesis apparatus is A configuration determining unit that acquires a behavioral description including a plurality of execution units, which is a behavioral description that describes the operation of the circuit, and that determines circuit configuration candidates that can be taken by the plurality of execution units as configuration candidates; A determination unit configured to calculate the circuit characteristic when the circuit configuration of the plurality of execution units is the configuration candidate as a circuit characteristic, and to output the configuration candidate as a determined circuit configuration when the circuit characteristic satisfies a threshold; A high-level synthesis unit that performs high-level synthesis on the behavioral description so that the circuit configuration of the plurality of execution units becomes the determination circuit configuration.
- the configuration determination unit acquires a behavior description that describes the behavior of the circuit and includes a plurality of execution units, and selects circuit configuration candidates that can be taken by the plurality of execution units. Determine as a configuration candidate. Then, the determination unit calculates the circuit characteristics when the circuit configuration of a plurality of execution units is the configuration candidate, and outputs the configuration candidate as the determined circuit configuration when the circuit characteristics satisfy a threshold value. To do. Further, the high-level synthesis unit performs high-level synthesis on the behavioral description so that the circuit configuration of a plurality of execution units becomes a decision circuit configuration.
- the high-level synthesis apparatus of the present invention it is possible to obtain the circuit configuration of the execution unit that satisfies the threshold value as the determination circuit configuration, and to perform high-level synthesis for realizing the determination circuit configuration. There is an effect that can be done.
- FIG. 1 is a configuration diagram of a high-level synthesis apparatus 100 according to Embodiment 1.
- FIG. 5 is a flowchart showing a high-level synthesis process S100 by a high-level synthesis method 510 and a high-level synthesis program 520 of the high-level synthesis apparatus 100 according to the first embodiment.
- FIG. 3 is a flowchart showing a logic configuration determination process S110 according to the first embodiment.
- FIG. 3 is a diagram showing an example of source code 151 according to the first embodiment. The figure which shows the example of the synthetic
- FIG. The figure which shows the example of the non-functional requirement result 52 (parallel type, the 1st time) calculated by determination process S113 which concerns on Embodiment 1.
- FIG. 1 The figure which shows the example of the non-functional requirement result 52 (series type, again) calculated by determination process S113 which concerns on Embodiment 1.
- FIG. 1 The figure which shows the example of the non-functional requirement result 52 (parallel type, again) calculated by determination process S113 which concerns on Embodiment 1.
- FIG. 1 The figure which shows the example of the non-functional requirement result 52 (series type, repeat again) calculated by determination process S113 which concerns on Embodiment 1.
- FIG. The figure which shows the example of the non-functional requirement result 52 (parallel type, repeat degree) calculated by determination process S113 which concerns on Embodiment 1.
- high-level synthesis apparatus 100 is a computer.
- the high-level synthesis apparatus 100 includes hardware such as a processor 910, a storage device 920, an input interface 930, and an output interface 940.
- the storage device 920 includes a memory 921 and an auxiliary storage device 922.
- the high-level synthesis apparatus 100 includes a logic configuration determination unit 110, a buffer configuration determination unit 120, a code conversion unit 130, a high-level synthesis unit 140, and a storage unit 150 as functional configurations.
- the logic configuration determination unit 110 includes a unit configuration determination unit 111, a configuration determination unit 112, a determination unit 113, an analysis unit 114, and a circuit sharing instruction unit 115.
- the functions of the logic configuration determination unit 110, the buffer configuration determination unit 120, the code conversion unit 130, and the high-level synthesis unit 140 in the high-level synthesis device 100 are referred to as “units” of the high-level synthesis device 100.
- the functions of the logic configuration determination unit 110 are the functions of the unit configuration determination unit 111, the configuration determination unit 112, the determination unit 113, the analysis unit 114, and the circuit sharing instruction unit 115.
- the function of “unit” of the high-level synthesis apparatus 100 is realized by software.
- the storage unit 150 is realized by the storage device 920.
- the storage unit 150 stores a source code 151, a non-functional requirement 152, a circuit specification 153, an RTL 154, and a synthesis report 155.
- the storage unit 150 stores information such as the synthesis result 51 generated by the unit configuration determination unit 111 and the non-functional requirement result 52 calculated by the determination unit 113.
- the processor 910 is connected to other hardware via a signal line, and controls these other hardware.
- the processor 910 is an IC (Integrated Circuit) that performs processing.
- the processor 910 is a CPU (Central Processing Unit).
- the storage device 920 includes a memory 921 and an auxiliary storage device 922.
- the auxiliary storage device 922 is a ROM (Read Only Memory), a flash memory, or an HDD (Hard Disk Drive).
- the memory 921 is a RAM (Random Access Memory).
- the storage unit 150 is realized by the memory 921.
- the storage unit 150 may be realized by the auxiliary storage device 922, or may be realized by the memory 921 and the auxiliary storage device 922. A method for realizing the storage unit 150 is arbitrary.
- the input interface 930 is a port connected to an input device such as a mouse, a keyboard, and a touch panel. Specifically, the input interface 930 is a USB terminal. The input interface 930 may be a port connected to a LAN (Local Area Network).
- the output interface 940 is a port to which a cable of a display device such as a display device is connected. Specifically, the output interface 940 is a USB terminal or a HDMI (registered trademark) (High Definition Multimedia Interface) terminal. Specifically, the display device is an LCD (Liquid Crystal Display).
- the output interface 940 may be connected to an output device such as a printer device.
- the auxiliary storage device 922 stores a program that realizes the function of “unit”. This program is loaded into the memory 921, read into the processor 910, and executed by the processor 910.
- the auxiliary storage device 922 also stores an OS (Operating System). At least a part of the OS is loaded into the memory 921, and the processor 910 executes a program that realizes the function of “unit” while executing the OS.
- OS Operating System
- the high-level synthesis apparatus 100 may include only one processor 910, or may include a plurality of processors 910.
- a plurality of processors 910 may execute a program for realizing the function of “unit” in cooperation with each other.
- Information, data, signal values, and variable values indicating the results of processing by the function of “unit” are stored in the memory 921, the auxiliary storage device 922, or a register or cache memory in the processor 910.
- an arrow connecting each unit and the storage unit 150 indicates that each unit stores a processing result in the storage unit 150 or each unit reads information from the storage unit 150.
- arrows connecting the respective parts represent the flow of control.
- the program for realizing the function of “part” may be stored in a portable recording medium such as a magnetic disk, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, or a DVD (Digital Versatile Disc).
- a program that realizes the function of “part” is also referred to as a high-level synthesis program 520.
- the high-level synthesis program 520 is a program that realizes the functions described as “parts”.
- what is referred to as a high-level synthesis program product is a storage medium and storage device in which the high-level synthesis program 520 is recorded, and loads a computer-readable program regardless of the appearance format.
- the high-level synthesis apparatus 100 performs high-level synthesis with the source code 151, the non-functional requirement 152, and the circuit specification 153 as inputs, and outputs an RTL 153 and a synthesis report 155.
- the source code 151 is an operation description in which the operation of a circuit to be high-level synthesized is described in a high-level language such as C language, C ++ language, System C language, or Matlab language.
- the source code 151 is input from the input device via the input interface 930 and stored in the storage unit 150.
- the source code 151 is an example of an operation description 511 describing the operation of the circuit.
- the source code 151 includes a plurality of execution units 515.
- the execution unit 515 is also called, for example, a loop description, a function, an operation unit, or a submodule.
- the non-functional requirements 152 define non-functional requirements for the requested circuit. Specifically, the non-functional requirement 152 defines information such as required circuit latency, area, throughput, power consumption, memory usage, multiplier usage, and a period for filling input data into the circuit. .
- the non-functional requirement 152 is input from the input device via the input interface 930 and stored in the storage unit 150.
- a non-functional requirement of a circuit is an example of a circuit characteristic that represents the characteristic or performance of the circuit.
- the non-functional requirement 152 is an example of a circuit characteristic threshold value 521.
- the circuit specifications 153 define circuit specifications. Specifically, the circuit specification 153 defines information such as interface definition with the outside, device name to be mapped (process name such as FPGA model name or ASIC), and frequency. The circuit specification 153 is input from the input device via the input interface 930 and stored in the storage unit 150.
- the RTL 154 is an example of a hardware description language, that is, HDL.
- the synthesis report 155 is output from the high-level synthesis tool together with the RTL 154.
- the non-functional requirements of the generated RTL 154 are set. That is, in the synthesis report 155, information such as the generated RTL latency, area, throughput, power consumption, memory usage, multiplier usage, and a period for filling circuit input data is set.
- a filling period of input data to the circuit will be described.
- a general item as circuit characteristics (performance) is latency. This is generally defined as a period from when input data is input to a circuit until it is output, or as the number of cycles.
- the first circuit configuration is a circuit configuration in which F1 and F2 are sequentially executed in series. This processes F2 after processing F1.
- F1 does not operate while F2 is operating.
- F2 does not operate during a period in which F1 is operating.
- the latency of F1 is F1_LAT and the latency of F2 is F2_LAT
- the total latency is a value obtained by adding F1_LAT and F2_LAT to F1_LAT + F2_LAT.
- the second circuit configuration is when F1 and F2 operate in parallel.
- Two memories, buffer A and buffer B, are prepared as double buffers between F1 and F2.
- F1 writes the processing result into the buffer A, and at the same time
- F2 reads out the buffer B and processes it, like a bucket relay.
- the latency of this circuit configuration is F1_LAT + F2_LAT, which is the same as the first circuit configuration.
- the two circuit configurations differ in the period during which the next data input can be accepted.
- the input data filling period is a period during which data input to an array used in an arbitrary function is filled. This input data filling period is called DT.
- This DT is one of the non-functional requirements 152.
- DT is F1_LAT + F2_LAT.
- DT is max (F1_LAT, F2_LAT).
- the high-level synthesis process S100 includes a logic configuration determination process S110, a buffer configuration determination process S120, a code conversion process S130, and a high-level synthesis execution process S140.
- the high-level synthesis process S100 receives the source code 151, the non-functional requirement 152 including the input data filling period, and the circuit specification 153.
- the circuit configuration of the entire circuit that satisfies the non-functional requirement 152 is set as the determination circuit configuration 310, and the in-unit configuration of the submodule (execution unit) that configures the circuit that satisfies the non-functional requirement 152 is determined.
- the internal configuration 311 is determined.
- the buffer configuration determination process S120 determines a buffer configuration that connects each execution unit. As described above, determining the circuit configuration of the circuit that satisfies the non-functional requirement 152, the intra-unit configuration of the execution unit that configures the circuit, and the buffer configuration that connects each execution unit may be performed by searching the circuit configuration. Say.
- FIG. 3 is a flowchart showing the logic configuration determination processing S110 according to the present embodiment.
- the logic configuration determination process S110 includes a unit configuration determination process S111, a configuration determination process S112, a determination process S113, an analysis process S114, and a circuit sharing instruction process S115.
- the unit configuration determination unit 111 determines the intra-unit configuration candidates that can be taken by each execution unit of a plurality of execution units as the intra-unit configuration candidates.
- the unit configuration determination unit 111 extracts a loop description location from the source code 151 as an execution unit by syntax analysis, and performs a function for each loop.
- a loop is an example of an execution unit. Then, the unit configuration determination unit 111 determines whether or not there is a dependency relationship between iterations in each loop. If the unit configuration determination unit 111 determines that there is no dependency between iterations in each loop, the unit configuration determination unit 111 determines that each loop can be pipelined or expanded.
- “expandable” means that parallelization is possible. Note that it may be determined using a high-level synthesis tool whether there is a dependency relationship between iterations in each loop.
- a description range including a function other than a loop as a cluster may be converted into a function. If the unit configuration determination unit 111 determines that there is a dependency relationship between iterations in each loop, the unit configuration determination unit 111 determines that each loop is not pipelined and cannot be expanded. By the unit configuration determination process S111, it is possible to determine whether pipelines can be created and whether development is possible in each loop. For this reason, loops (circuits) that cannot be pipelined or expanded can be speeded up by searching for a desired circuit.
- the unit configuration determining unit 111 inputs the source code 151 to the high-level synthesis tool, and obtains non-functional requirements such as latency and circuit scale for each loop as the synthesis result 51. Specifically, the unit configuration determination unit 111 performs the case where the latency (LOGIC_LAT) and the circuit scale (AREA) for one iteration processing in the loop are pipelined and non-pipelined respectively. Get about. At this time, the unit configuration determination unit 111 selects a mode in which circuit sharing is not performed in the high-level synthesis tool. Usually, circuit sharing tends to increase latency. The circuit latency can be set with the high-level synthesis tool option, but it can be set infinitely.
- circuit sharing at the time of unit configuration determination processing S111 is suppressed, and circuit sharing is performed by designating latency in circuit sharing instruction processing S116, which is a subsequent process, thereby limiting the search range and increasing the speed. Has the effect of obtaining an optimal solution.
- FIG. 4 is a diagram illustrating an example of the source code 151 according to the present embodiment.
- the unit configuration determination unit 111 extracts a loop description location from the source code 151 shown in FIG. 4 by syntax analysis, and performs a function with F1 and F2 for each loop.
- Each of the loop description of F1 and the loop description of F2 shown in FIG. 4 is an example of the execution unit 515.
- the unit configuration determining unit 111 determines that there is no dependency in each loop, and any loop can be pipelined or expanded. Is determined. Then, the unit configuration determining unit 111 inputs the source code 151 to the high-level synthesis tool.
- FIG. 4 is a diagram illustrating an example of the source code 151 according to the present embodiment.
- the unit configuration determination unit 111 extracts a loop description location from the source code 151 shown in FIG. 4 by syntax analysis, and performs a function with F1 and F2 for each loop.
- FIG. 5 is a diagram showing a synthesis result 51 when the source code 151 according to the present embodiment is input to the high-level synthesis tool.
- FIG. 5 shows a synthesis result 51 when a high-level synthesis is performed in a pipelined loop (circuit), but it can be similarly obtained when a high-level synthesis is performed in a non-pipeline.
- the unit configuration determination process S111 is also referred to as an in-loop architecture determination process that determines a configuration in a loop using a loop included in the entire circuit represented by the source code 151 as an execution unit or function.
- the unit configuration determination unit 111 is also referred to as an in-loop architecture determination unit.
- the unit configuration determining unit 111 determines whether or not each execution unit can be pipelined and whether or not it can be expanded, and determines the intra-unit configuration candidates that each execution unit can take as intra-unit configuration candidates. That is, if the unit configuration determining unit 111 determines that execution units can be pipelined, the intra-unit configuration candidates are pipelined and non-pipelined.
- the configuration determination unit 112 acquires the source code 151 including the plurality of execution units as the source code 151 describing the operation of the circuit, and configures circuit configuration candidates that can be taken by the plurality of execution units. Determine as a candidate. Specifically, the configuration determining unit 112 determines configuration candidates from the dependency relationships of different loop descriptions. That is, the configuration determining unit 112 determines whether or not the circuits of different loop description portions can be executed in parallel based on the dependency relationship between the different loop descriptions.
- the configuration determination unit 112 determines that the circuits of different loop description portions can be executed in parallel, the configuration determination unit 112 measures the timing at which the parallel execution of the circuits of different loop description portions can be started.
- the dependency relationship of different loop descriptions means a configuration between execution units represented by loops in a circuit described by the source code 151, that is, a circuit configuration of the entire circuit.
- the serial type is a circuit configuration that does not execute in parallel, and is a circuit configuration that performs the subsequent loop processing after the previous loop processing is completed.
- the second is a parallel type (basic type). This is a circuit configuration in which a preceding loop and a succeeding loop are executed completely independently and in parallel. This is the bucket relay system described above.
- the third is a parallel type (delay type). This is a circuit configuration in which the subsequent loop is started from the middle of the previous loop execution.
- the serial type has a large latency, but has the feature that it is possible to promote circuit sharing.
- the parallel type (basic type) has a medium latency. Further, the parallel type (delay type) has a feature that the latency can be reduced.
- any loop description can be adopted as a serial type and a parallel type (basic type).
- the parallel type depends on the implementation of the source code.
- the configuration determination unit 112 determines whether or not circuits of different loop description portions can be configured in a parallel type (delayed type).
- the procedure of the configuration determination process S112 is as follows. (1) The configuration determining unit 112 extracts variables that are commonly used between loops, that is, commonly referenced or substituted by syntactic analysis. (2) In each loop, the configuration determining unit 112 extracts the index to be written to and read from the variable by syntax analysis. When writing to a variable, if the variable is not an array, the final iteration value, that is, the loop upper limit value is used as an index. In reading to a variable, if the variable is not an array, the index is set to 0. (3) The configuration determining unit 112 calculates the absolute difference value between the common variable write and read indexes, and calculates the maximum value as Delay from these.
- the configuration determination unit 112 extracts variables sum and b that are commonly used between loops using syntax analysis.
- the index assigned to sum and b [i] in the loop of F1 is extracted.
- the index assigned to sum is SIZE-1 (loop upper limit value).
- the index assigned to b [i] is “0... SIZE ⁇ 1 (+1)”.
- ... Means that the numbers shown in parentheses are added in order. That is, it is synonymous with 0, 1, 2, 3,..., SIZE-1.
- sum and b [i] are leads.
- the configuration determining unit 112 determines the dependency of the plurality of loop descriptions based on the index of the variable common to the plurality of loop descriptions.
- the configuration determination process S112 determines whether or not circuits of different loop description parts included in the entire circuit represented by the source code 151 can be configured in a parallel type (delayed type).
- the configuration determination process S112 is also referred to as an inter-loop architecture determination process.
- the configuration determination unit 112 is also referred to as an inter-loop architecture determination unit.
- the configuration determining unit 112 determines whether or not a plurality of loop description circuit configurations can be configured in parallel (delayed), and determines a configuration candidate for a plurality of loop description circuit configurations.
- the determination unit 113 calculates the circuit characteristic when the circuit configuration of the plurality of loop descriptions is the configuration candidate determined in the configuration determination process S112 as the circuit characteristic 522. Then, the determination unit 113 outputs the configuration candidate as the determination circuit configuration 310 when the circuit characteristic 522 satisfies the threshold value 521. Further, when the circuit characteristic 522 satisfies the threshold value 521, the determination unit 113 outputs the intra-unit configuration candidate of each execution unit 515 of the plurality of execution units 515 as the intra-decision unit configuration 311. Specifically, the determination unit 113 calculates the non-function (circuit characteristic 522) of the circuit configuration (inter-loop architecture) of the entire circuit.
- the determination unit 113 calculates the circuit characteristics 522 for each execution unit circuit configuration candidate and for each execution unit intra-unit configuration candidate, and calculates the non-functional requirement result 52 including the circuit characteristics 522.
- the determination unit 113 calculates a circuit characteristic 522 including a circuit latency and a circuit input data filling period (DT).
- the determination unit 113 determines whether or not the calculated non-functional requirement result 52 satisfies the non-functional requirement 152 (threshold value 521) stored in the storage unit 150 (step S113a).
- FIG. 6 is a diagram showing an execution unit calculation formula 3131 that is the calculation formula 31 of the intra-unit configuration (intra-loop architecture) used in the determination processing S113 according to the present embodiment.
- FIG. 7 is a diagram showing a circuit configuration calculation formula 3132 that is a calculation formula 31 of the circuit configuration (inter-loop architecture) used in the determination processing S113 according to the present embodiment.
- FIG. 8 is a diagram showing a DT calculation formula 3133 which is the calculation formula 31 of the circuit configuration (inter-loop architecture) used in the determination processing S113 according to the present embodiment.
- LOOP is the number of loops.
- N is a parallel number.
- LOGIC_LAT is latency for one iteration.
- FN is processing of loop number N, and there are F1 and F2 in the sample (specific example).
- FNcycle is the latency of FN.
- Delay n-1, n is the distance obtained in the FN-th and FN-1th configuration determination processing S112 described above.
- DII Data Initiation Interval
- the determination unit 113 uses the execution unit calculation formula 3131 to calculate the latency of the execution unit, that is, the latency in the loop. Then, the determination unit 113 calculates the latency of the circuit configuration (inter-loop architecture) of the entire circuit using the latency of the execution unit and the circuit configuration calculation formula 3132. Further, the determination unit 113 calculates the DT of the circuit configuration (inter-loop architecture) of the entire circuit using the latency of the execution unit and the DT calculation formula 3133. That is, the determination unit 113 calculates latency and DT as the non-functional requirement result 52 as the non-function of the circuit configuration (inter-loop architecture) of the entire circuit.
- FIGS. 9 and 10 are diagrams showing the non-functional requirement result 52 calculated from the source code 151 shown in FIG.
- FIG. 9 shows a non-functional requirement result 52 when the circuit configuration of the source code 151 is a serial type.
- FIG. 10 shows a non-functional requirement result 52 when the circuit configuration of the source code 151 is a parallel type.
- the determination unit 113 calculates the characteristics of each execution unit of a plurality of execution units as the characteristics for each unit, and calculates the circuit characteristics 522 of the entire circuit based on the calculated characteristics for each unit. .
- the determination unit 113 calculates the circuit characteristics 522 for each in-unit configuration candidate of each execution unit of a plurality of execution units.
- the determination unit 113 calculates the characteristics for each unit for each intra-unit configuration candidate in the case of the pipeline and the case of the non-pipeline. Then, the circuit characteristic 522 is calculated based on the calculated unit characteristic for each intra-unit configuration candidate.
- step S ⁇ b> 113 a in FIG. 3 the determination unit 113 determines whether or not the circuit characteristic 522 satisfies the threshold value 521. Specifically, the determination unit 113 determines whether the non-functional requirement result 52 calculated from the source code 151 satisfies the non-functional requirement 152. If the determination unit 113 determines that the non-functional requirement result 52 does not satisfy the non-functional requirement 152, the determination unit 113 proceeds to analysis processing S114. On the other hand, if the determination unit 113 determines that the non-functional requirement result 52 satisfies the non-functional requirement 152, the determination unit 113 proceeds to circuit sharing instruction processing S115.
- ⁇ Analysis process S114> In the analysis process S114, when the determination unit 113 determines that the circuit characteristic 522 does not satisfy the threshold value 521, the analysis unit 114 analyzes the execution unit 515 whose configuration is changed based on the characteristics for each unit. Specifically, when the non-functional requirement result 52 does not satisfy the non-functional requirement 152, an improvement point for satisfying the non-functional requirement 152 is analyzed. The analysis unit 114 outputs an improvement instruction as an improvement instruction to the unit configuration determination process S111, and returns the process to the unit configuration determination process S111.
- the analysis unit 114 extracts the execution unit having the largest latency estimated value for each execution unit. Then, the analysis unit 114 outputs an improvement instruction such as setting the parallelism N to 2 or changing the frequency for the extracted execution unit to the unit configuration determination unit 111. In the unit configuration determination process S111, the unit configuration determination unit 111 improves the design based on the improvement instruction output from the analysis unit 114, and performs the evaluation again. Further, when the circuit scale as the non-functional requirement 152 cannot be satisfied, the analysis unit 114 outputs an improvement instruction that defines a value obtained by adding 1 to the current LOGIC_LAT value as LOGIC_LAT to the unit configuration determination unit 111.
- the unit configuration determination unit 111 turns on the circuit sharing mode on the high-level synthesis tool and executes high-level synthesis based on the improvement instruction output from the analysis unit 114.
- the high-level synthesis is executed with the circuit sharing mode turned off. That is, the latency is the shortest and the circuit scale is large.
- the circuit sharing mode is turned on. In this case, the high-level synthesis tool does not know how much circuit sharing should be performed. This is because no latency is set.
- this processing is a method for searching for circuit sharing while maintaining latency, which is a non-functional requirement, as much as possible, and can search for circuit scale sharing at high speed.
- the source code 151 in FIG. 4 will be described as an example. Assume that the latency of the non-functional requirement 152 is 1000 and the DT is 1000. In the non-functional requirement result 52 shown in FIG. 9 (series type) and FIG. 10 (parallel type), the latency and DT of the non-functional requirement 152 are not satisfied. The analysis unit 114 determines that the non-functional requirement result 52 does not satisfy the non-functional requirement 152.
- the analysis unit 114 performs parallelization in order to reduce the large value of Fcycle.
- the execution unit that is, a function or logic
- the size of the latency is determined from, for example, the sum of the latency. In this example, when F1 is a non-pipe and F2 is a pipe, F1 is larger, but for simplicity, F2 is parallelized.
- the analysis unit 114 actually determines an appropriate improvement point by a combination of each execution unit.
- FIG. 13 (series type) and FIG. 14 (parallel type) show the non-functional requirement result 52 calculated again in the unit configuration determination process S111. From the result of FIG. 14, it is determined that the circuit configuration in which F1 with parallel degree 2 in the pipeline and F2 with parallel degree 2 in the pipeline are executed in parallel satisfies the non-functional requirement 152.
- circuit sharing instruction process S115> Next, returning to FIG.
- the circuit sharing instruction unit 115 instructs circuit sharing based on the unit-specific characteristics of each execution unit. Specifically, the circuit sharing instruction unit 115 obtains the latency of the in-unit configuration that does not affect the latency of the entire circuit, and provides this as an option to the high-level synthesis tool. This process is limited to the case where the parallel type is selected as the circuit configuration. In the parallel type, there is an execution unit in which the latency of the execution unit does not appear on the latency calculation formula and the DT calculation formula, as in the calculation formula described above.
- circuit configuration determined to satisfy the non-functional requirement 152 in step S113a of the determination process S113 illustrated in FIG. The circuit configuration was From FIG. 14, this circuit configuration is a parallel type, and LOGIC_LAT of F1 is 2, and LOGIC_LAT of F2 is 4.
- setting LOGIC_LAT of F1 to 4 does not affect the overall performance, so LOGIC_LAT is set to 4 and F1 is synthesized again. By doing so, circuit sharing becomes possible and the area can be reduced.
- a circuit configuration that satisfies the non-functional requirement 152 is determined by the logic configuration determination process S110.
- the buffer configuration determination unit 120 determines the buffer configuration 22 between the plurality of execution units when the plurality of execution units form the determination circuit configuration 310. That is, the buffer configuration determining unit 120 determines the buffer configuration 22 for realizing the determining circuit configuration 310 determined in the logic configuration determining process S110.
- the procedure of the buffer configuration determination process S120 is shown below.
- the buffer configuration determination unit 120 determines the basic configuration of the buffer as a shared type if the circuit configuration (inter-loop architecture) of the entire circuit is a serial type, a double buffer type if the parallel type (basic type) is a parallel type If it is a delay type, the line buffer type is used.
- SIZE acquisition (2-1) Share type: Judged from the number of elements in the array.
- shift registering is determined from the index of the number of elements.
- the buffer configuration determination unit 120 Determination of the number of ports and the number of memories When the in-unit configuration is parallel, the buffer configuration determination unit 120 generates the number of ports and the number of memories according to the parallel number. The buffer configuration determination unit 120 determines the buffer configuration 22 by the above procedure.
- the code conversion unit 130 converts the operation description so that the circuit configuration of a plurality of execution units becomes the determination circuit configuration 310, and outputs the converted operation description as the conversion description. Furthermore, the code conversion unit 130 converts the behavioral description and sets the high-level synthesis option so that the intra-unit configuration of each execution unit of the plurality of execution units becomes the intra-determined unit configuration 311. Further, the code conversion unit 130 converts the behavioral description so as to realize the buffer configuration 22 determined by the buffer configuration determination unit 120 and sets a high-level synthesis option.
- the code conversion unit 130 acquires the determination circuit configuration 310 and the determination unit internal configuration 311 determined in the logic configuration determination processing S110 and the buffer configuration 22 determined in the buffer configuration determination processing S120. Based on the decision circuit configuration 310, the determination unit internal configuration 311 and the buffer configuration, the code conversion unit 130 converts the source code in order to realize the decision circuit configuration 310, the determination unit internal configuration 311 and the buffer configuration. And insert and set high-level synthesis options. Since the description method and options differ depending on the high-level synthesis tool, the source code and the high-level synthesis option may be generated using a template design.
- the high-level synthesis unit 140 executes the high-level synthesis execution processing S140 by inputting the source code generated in the code conversion processing S130 and the high-level synthesis option to the high-level synthesis tool, and performs RTL 154 and synthesis. A report 155 is output.
- the high-level synthesis apparatus 100 may include a communication device, and may receive the source code 151, the non-functional requirement 152, and the circuit specification 153 via the communication device. In addition, the high-level synthesis apparatus 100 may transmit the RTL 154 and the synthesis report 155 via the communication apparatus.
- the communication device includes a receiver and a transmitter. Specifically, the communication device is a communication chip or a NIC (Network Interface Card). The communication device functions as a communication unit that communicates data. The receiver functions as a receiving unit that receives data, and the transmitter functions as a transmitting unit that transmits data.
- the “part” function of the high-level synthesis apparatus 100 is realized by software, but as a modification, the “part” function of the high-level synthesis apparatus 100 may be realized by hardware.
- the configuration of a high-level synthesis apparatus 100x according to a modification of the present embodiment will be described using FIG. As shown in FIG. 15, the high-level synthesis apparatus 100x includes hardware such as a processing circuit 909, an input interface 930, and an output interface 940.
- the processing circuit 909 is a dedicated electronic circuit that realizes the function of the “unit” and the storage unit 150 described above. Specifically, the processing circuit 909 includes a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA (Gate Array), an ASIC (Application Specific Integrated Circuit), or an FPGA (Field). -Programmable Gate Array).
- unit may be realized by one processing circuit 909 or may be realized by being distributed to a plurality of processing circuits 909.
- the function of the high-level synthesis apparatus 100 may be realized by a combination of software and hardware. That is, some functions of the high-level synthesis apparatus 100 may be realized by dedicated hardware, and the remaining functions may be realized by software.
- the processor 910, the storage device 920, and the processing circuit 909 are collectively referred to as a “processing circuit”. That is, regardless of the configuration of the high-level synthesis apparatus 100 shown in FIGS. 1 and 10, the function of “unit” and the storage unit 150 are realized by a processing circuit.
- Part may be read as “Process”, “Procedure” or “Process”. Further, the function of “unit” may be realized by firmware.
- the high-level synthesis apparatus 100 performs a high-level synthesis process by inputting a source code that is an operation description describing the operation of a circuit, a non-functional requirement that determines circuit characteristics, and a circuit specification to be synthesized. And output a hardware description language.
- the high-level synthesis apparatus 100 includes a logic configuration determining unit that determines an internal architecture and a parallelized architecture of a parallel execution unit, and a buffer configuration determining unit that determines a buffer configuration between the parallelized architectures.
- the high-level synthesis apparatus 100 also includes a code conversion unit that generates a source code and a high-level synthesis option that realize the logic architecture determined by the logic configuration determination unit and the buffer configuration determined by the buffer configuration determination unit. Therefore, according to the high-level synthesis apparatus 100 according to the present embodiment, the architecture design for satisfying the non-functional requirements, the source code for realizing the architecture, the high-level synthesis option, and the like, which have been performed manually until now. Settings can be made automatically and at high speed. Furthermore, according to the high-level synthesis apparatus 100 according to the present embodiment, an optimum circuit can be designed in a short time without depending on the designer.
- the high-level synthesis apparatus 100 when the generated circuit cannot satisfy the non-functional requirements, the high-level synthesis apparatus 100 includes the analysis unit that changes the architecture to improve the non-functional requirements. The architecture can be changed until it is satisfied, and the optimum circuit design can be ensured.
- the circuit sharing instruction unit that allows the circuit sharing degree to be determined in accordance with the latency that satisfies the non-functional requirements is provided, an optimum circuit design can be performed. Can be efficient.
- the functional blocks of the high-level synthesis apparatus are arbitrary as long as the functions described in the above embodiments can be realized.
- the high-level synthesis apparatus may be configured with any combination or arbitrary block configuration of these functional blocks. Further, the high-level synthesis apparatus may be a high-level synthesis system including a plurality of devices instead of a single device.
- this embodiment may be partially implemented.
- this embodiment may be implemented in any combination as a whole or in part.
- said embodiment is an essentially preferable illustration, Comprising: It does not intend restrict
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Architecture (AREA)
- Software Systems (AREA)
Abstract
構成決定部(112)が、回路の動作を記述した動作記述(511)であって複数の実行単位を含む動作記述(511)を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。判定部(113)が、複数の実行単位の回路構成を構成候補とした場合の回路の特性を回路特性(522)として算出し、回路特性(522)が閾値(521)を満たす場合に構成候補を決定回路構成(310)として出力する。高位合成部(140)が、複数の実行単位の回路構成が決定回路構成(310)となるように動作記述(511)に対して高位合成を実行する。
Description
本発明は、プログラミング言語による動作記述からレジスタ転送レベルの回路記述を自動生成する高位合成装置、高位合成方法及び高位合成プログラムに関する。
従来の半導体集積回路の設計では、RTL(Register Transfer Level)といったハードウェア記述言語を用いて、レジスタ(フリップフロップ)間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いC言語、C++言語、SystemC言語、Matlab言語といった高級言語を用いて設計を行い、RTLを自動的に生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
設計者は、高級言語を用いたソースコードと、回路仕様とを高位合成ツールに入力することで、回路設計を行うことができる。また、設計者は、高級言語では表現できない、或いはソースコードで表現するには効率的でない回路仕様については、オプション、アトリビュート、プラグマといった高位合成オプションを設定して、高位合成ツールに入力する。
設計者は、高級言語を用いたソースコードと、回路仕様とを高位合成ツールに入力することで、回路設計を行うことができる。また、設計者は、高級言語では表現できない、或いはソースコードで表現するには効率的でない回路仕様については、オプション、アトリビュート、プラグマといった高位合成オプションを設定して、高位合成ツールに入力する。
これらの高位合成オプションは、回路の非機能要件であるレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量等に影響を与える。高位合成ツールでは、配列のメモリ化あるいはレジスタ化、演算のパイプライン化或いは非パイプライン化を指定する高位合成オプションがある。ソースコードの動作記述自体は変更せずに、これらの高位合成オプションを設定し高位合成を行うことで、非機能要件であるメモリ使用量やスループットを容易に知ることができる。
つまり、これらの高位合成オプションの組み合わせを試行し、試行結果から得られる特性、すなわち非機能要件を満たす最適な回路を選択することで、所望の回路を得ることができる。
しかしながら、これらの高位合成オプションの組み合わせは膨大になるため、探索の高速化が課題になる。そこで、特許文献1では、これらの高位合成オプションの設計空間を定義し、この設計空間の探索を高速に行う方法を開示している。
つまり、これらの高位合成オプションの組み合わせを試行し、試行結果から得られる特性、すなわち非機能要件を満たす最適な回路を選択することで、所望の回路を得ることができる。
しかしながら、これらの高位合成オプションの組み合わせは膨大になるため、探索の高速化が課題になる。そこで、特許文献1では、これらの高位合成オプションの設計空間を定義し、この設計空間の探索を高速に行う方法を開示している。
しかし、特許文献1では各クラスタの最適化は可能であるが、クラスタ間のアーキテクチャに着目されておらず、クラスタ間のアーキテクチャ探索ができないという課題がある。
本発明は、非機能要件を満たすためのアーキテクチャ設計において、実行単位間の構成を考慮したアーキテクチャ設計と、そのアーキテクチャを実現するための高位合成を行うことを目的とする。
本発明に係る高位合成装置は、
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部とを備えた。
回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部とを備えた。
本発明に係る高位合成装置では、構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する。そして、判定部が、複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する。さらに、高位合成部が、複数の実行単位の回路構成が決定回路構成となるように動作記述に対して高位合成を実行する。よって、本発明に係る高位合成装置によれば、回路特性が閾値を満たす実行単位の回路構成を決定回路構成として得ることができると共に、その決定回路構成を実現するための高位合成を行うことができるという効果を奏する。
実施の形態1.
***構成の説明***
図1を用いて、本実施の形態に係る高位合成装置100の構成について説明する。
本実施の形態において、高位合成装置100は、コンピュータである。高位合成装置100は、プロセッサ910、記憶装置920、入力インタフェース930、出力インタフェース940といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
***構成の説明***
図1を用いて、本実施の形態に係る高位合成装置100の構成について説明する。
本実施の形態において、高位合成装置100は、コンピュータである。高位合成装置100は、プロセッサ910、記憶装置920、入力インタフェース930、出力インタフェース940といったハードウェアを備える。記憶装置920は、メモリ921と補助記憶装置922とを有する。
高位合成装置100は、機能構成として、ロジック構成判定部110と、バッファ構成判定部120と、コード変換部130と、高位合成部140と、記憶部150とを備える。ロジック構成判定部110は、単位構成決定部111、構成決定部112、判定部113、解析部114、回路共有指示部115を備える。
以下の説明では、高位合成装置100におけるロジック構成判定部110と、バッファ構成判定部120と、コード変換部130と、高位合成部140の機能を、高位合成装置100の「部」の機能という。ロジック構成判定部110の機能とは、単位構成決定部111と、構成決定部112と、判定部113と、解析部114と、回路共有指示部115の機能である。
高位合成装置100の「部」の機能は、ソフトウェアで実現される。
以下の説明では、高位合成装置100におけるロジック構成判定部110と、バッファ構成判定部120と、コード変換部130と、高位合成部140の機能を、高位合成装置100の「部」の機能という。ロジック構成判定部110の機能とは、単位構成決定部111と、構成決定部112と、判定部113と、解析部114と、回路共有指示部115の機能である。
高位合成装置100の「部」の機能は、ソフトウェアで実現される。
また、記憶部150は、記憶装置920で実現される。記憶部150には、ソースコード151、非機能要件152、回路仕様153、RTL154、合成レポート155が記憶される。また、記憶部150には、単位構成決定部111により生成される合成結果51、判定部113により算出された非機能要件結果52といった情報が記憶される。
プロセッサ910は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、具体的には、CPU(Central Processing Unit)である。
プロセッサ910は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ910は、具体的には、CPU(Central Processing Unit)である。
記憶装置920は、メモリ921及び補助記憶装置922を含む。補助記憶装置922は、具体的には、ROM(Read Only Memory)、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。メモリ921は、具体的には、RAM(Random Access Memory)である。本実施の形態では、記憶部150は、メモリ921により実現される。なお、記憶部150は、補助記憶装置922により実現されてもよいし、メモリ921と補助記憶装置922とにより実現されていてもよい。記憶部150の実現方法は任意である。
入力インタフェース930は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートである。入力インタフェース930は、具体的には、USB端子である。なお、入力インタフェース930は、LAN(Local Area Network)と接続されるポートであってもよい。
出力インタフェース940は、ディスプレイ装置といった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイ装置は、具体的には、LCD(Liquid Crystal Display)である。なお、出力インタフェース940は、プリンタ装置といった出力装置に接続されていてもよい。
出力インタフェース940は、ディスプレイ装置といった表示機器のケーブルが接続されるポートである。出力インタフェース940は、具体的には、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。ディスプレイ装置は、具体的には、LCD(Liquid Crystal Display)である。なお、出力インタフェース940は、プリンタ装置といった出力装置に接続されていてもよい。
補助記憶装置922には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ921にロードされ、プロセッサ910に読み込まれ、プロセッサ910によって実行される。補助記憶装置922には、OS(Operating System)も記憶されている。OSの少なくとも一部がメモリ921にロードされ、プロセッサ910はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
高位合成装置100は、1つのプロセッサ910のみを備えていてもよいし、複数のプロセッサ910を備えていてもよい。複数のプロセッサ910が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ921、補助記憶装置922、又は、プロセッサ910内のレジスタ又はキャッシュメモリに記憶される。なお、図1において、各部と記憶部150とを結ぶ矢印は、各部が処理の結果を記憶部150に記憶すること、或いは、各部が記憶部150から情報を読み出すことを表している。また、各部を結ぶ矢印は、制御の流れを表している。
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disc)といった可搬記録媒体に記憶されてもよい。
なお、「部」の機能を実現するプログラムを高位合成プログラム520ともいう。高位合成プログラム520は、「部」として説明している機能を実現するプログラムである。また、高位合成プログラムプロダクトと称されるものは、高位合成プログラム520が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
なお、「部」の機能を実現するプログラムを高位合成プログラム520ともいう。高位合成プログラム520は、「部」として説明している機能を実現するプログラムである。また、高位合成プログラムプロダクトと称されるものは、高位合成プログラム520が記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
<高位合成装置100の入出力>
次に、本実施の形態の高位合成装置100の入出力について説明する。
高位合成装置100は、ソースコード151と非機能要件152と回路仕様153とを入力として高位合成を行い、RTL153と合成レポート155とを出力する。
次に、本実施の形態の高位合成装置100の入出力について説明する。
高位合成装置100は、ソースコード151と非機能要件152と回路仕様153とを入力として高位合成を行い、RTL153と合成レポート155とを出力する。
ソースコード151は、高位合成対象の回路の動作をC言語、C++言語、SystemC言語、Matlab言語といった高級言語で記述した動作記述である。ソースコード151は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。ソースコード151は、回路の動作を記述した動作記述511の一例である。
また、ソースコード151は、複数の実行単位515を含む。実行単位515は、例えば、ループ記述、関数、動作単位、サブモジュールともいう。
また、ソースコード151は、複数の実行単位515を含む。実行単位515は、例えば、ループ記述、関数、動作単位、サブモジュールともいう。
非機能要件152には、要求する回路の非機能要件が定義されている。具体的には、非機能要件152には、要求する回路のレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が定義されている。非機能要件152は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。回路の非機能要件とは回路の特性或いは性能を表す回路特性の一例である。また、非機能要件152とは、回路特性の閾値521の一例である。
回路仕様153には、回路の仕様が定義されている。具体的には、回路仕様153には、外部とのインタフェース定義、マッピングするデバイス名(FPGAの形名やASICなどのプロセス名)、周波数といった情報が定義されている。回路仕様153は、入力装置から入力インタフェース930を介して入力され、記憶部150に記憶される。
RTL154は、ハードウェア記述言語、即ちHDLの例である。
合成レポート155は、RTL154と共に高位合成ツールから出力される。合成レポート155には、生成されたRTL154の非機能要件が設定される。即ち、合成レポート155には、生成されたRTLのレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が設定されている。
合成レポート155は、RTL154と共に高位合成ツールから出力される。合成レポート155には、生成されたRTL154の非機能要件が設定される。即ち、合成レポート155には、生成されたRTLのレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が設定されている。
<入力データの充填期間について>
ここで、回路への入力データの充填期間について説明する。回路の特性(性能)として一般的な項目は、レイテンシである。これは、入力データが回路に入力されてから、出力されるまでの期間、或いはサイクル数として定義されるのが一般である。
ここで、回路への入力データの充填期間について説明する。回路の特性(性能)として一般的な項目は、レイテンシである。これは、入力データが回路に入力されてから、出力されるまでの期間、或いはサイクル数として定義されるのが一般である。
さて、関数F1と関数F2を実行する回路を設計する場合、大きく2つの回路構成が考えられる。
1つ目の回路構成は、F1とF2とを順序的に、直列に実行する回路構成である。これはF1を処理した後で、F2を処理する。この回路では、F1とF2で回路共有ができるため、回路規模の削減が見込める。つまり、F2が動作している期間はF1は動作しない。また、F1が動作している期間はF2は動作しないことになる。ここでF1のレイテンシをF1_LAT、F2のレイテンシをF2_LATとすると、トータルのレイテンシは、F1_LATとF2_LATを足した値F1_LAT+F2_LATとなる。
2つ目の回路構成は、F1とF2が並列で動作する場合である。F1とF2間にはダブルバッファとして、バッファAとバッファBとの2つのメモリを用意する。F1が処理結果をバッファAに書き込み、それと同時にF2はバッファBを読み出し、処理するという流れで、バケツリレーのように処理する。この回路構成のレイテンシも1つ目の回路構成と同じ、F1_LAT+F2_LATである。
1つ目の回路構成は、F1とF2とを順序的に、直列に実行する回路構成である。これはF1を処理した後で、F2を処理する。この回路では、F1とF2で回路共有ができるため、回路規模の削減が見込める。つまり、F2が動作している期間はF1は動作しない。また、F1が動作している期間はF2は動作しないことになる。ここでF1のレイテンシをF1_LAT、F2のレイテンシをF2_LATとすると、トータルのレイテンシは、F1_LATとF2_LATを足した値F1_LAT+F2_LATとなる。
2つ目の回路構成は、F1とF2が並列で動作する場合である。F1とF2間にはダブルバッファとして、バッファAとバッファBとの2つのメモリを用意する。F1が処理結果をバッファAに書き込み、それと同時にF2はバッファBを読み出し、処理するという流れで、バケツリレーのように処理する。この回路構成のレイテンシも1つ目の回路構成と同じ、F1_LAT+F2_LATである。
しかし、上記2つの回路構成は、次のデータの入力を受付可能とする期間が異なる。1つ目の回路構成は、F1でデータを受理した後、F2が実行されるまで、次の入力を受け取れない。一方で、2つ目の回路構成は、バケツリレー方式なので、F2の実行中に依存せず、F1は次のデータを受け付けることが可能となる。
ここで、入力データ充填期間を定義する。入力データ充填期間は、任意の関数で利用される配列へのデータ入力が充填される期間である。この入力データ充填期間をDTと呼ぶ。このDTは非機能要件152の1つである。
上記1つ目の回路構成では、DTは、F1_LAT+F2_LATである。上記2つ目の回路構成では、DTは、max(F1_LAT,F2_LAT)となる。
ここで、入力データ充填期間を定義する。入力データ充填期間は、任意の関数で利用される配列へのデータ入力が充填される期間である。この入力データ充填期間をDTと呼ぶ。このDTは非機能要件152の1つである。
上記1つ目の回路構成では、DTは、F1_LAT+F2_LATである。上記2つ目の回路構成では、DTは、max(F1_LAT,F2_LAT)となる。
このように非機能要件152においてDTを定義することにより、生成される回路の候補を限定することが可能になり、高速に探索が可能になる。
***動作の説明***
次に、本実施の形態に係る高位合成装置100の動作について説明する。
図2を用いて、本実施の形態に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100の処理の概要について説明する。
高位合成処理S100は、ロジック構成判定処理S110と、バッファ構成判定処理S120と、コード変換処理S130と、高位合成実行処理S140とを有する。
次に、本実施の形態に係る高位合成装置100の動作について説明する。
図2を用いて、本実施の形態に係る高位合成装置100の高位合成方法510及び高位合成プログラム520による高位合成処理S100の処理の概要について説明する。
高位合成処理S100は、ロジック構成判定処理S110と、バッファ構成判定処理S120と、コード変換処理S130と、高位合成実行処理S140とを有する。
高位合成処理S100は、ソースコード151と、入力データ充填期間を含んだ非機能要件152と、回路仕様153とを入力とする。
ロジック構成判定処理S110は、非機能要件152を満たす回路全体の回路構成を決定回路構成310として、また、非機能要件152を満たす回路を構成するサブモジュール(実行単位)の単位内構成を決定単位内構成311として決定する。
また、バッファ構成判定処理S120は、各実行単位を接続するバッファ構成を決定する。このように、非機能要件152を満たす回路の回路構成と、この回路を構成する実行単位の単位内構成と、各実行単位を接続するバッファ構成とを決定することを、回路構成を探索するともいう。
ロジック構成判定処理S110は、非機能要件152を満たす回路全体の回路構成を決定回路構成310として、また、非機能要件152を満たす回路を構成するサブモジュール(実行単位)の単位内構成を決定単位内構成311として決定する。
また、バッファ構成判定処理S120は、各実行単位を接続するバッファ構成を決定する。このように、非機能要件152を満たす回路の回路構成と、この回路を構成する実行単位の単位内構成と、各実行単位を接続するバッファ構成とを決定することを、回路構成を探索するともいう。
<ロジック構成判定処理S110>
図3は、本実施の形態に係るロジック構成判定処理S110を示すフロー図である。
ロジック構成判定処理S110は、単位構成決定処理S111と、構成決定処理S112と、判定処理S113と、解析処理S114と、回路共有指示処理S115とを有する。
図3は、本実施の形態に係るロジック構成判定処理S110を示すフロー図である。
ロジック構成判定処理S110は、単位構成決定処理S111と、構成決定処理S112と、判定処理S113と、解析処理S114と、回路共有指示処理S115とを有する。
<単位構成決定処理S111>
まず、単位構成決定処理S111について説明する。単位構成決定処理S111では、単位構成決定部111は、複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。
まず、単位構成決定処理S111について説明する。単位構成決定処理S111では、単位構成決定部111は、複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。
単位構成決定処理S111において、単位構成決定部111は、ソースコード151からループ記述箇所を実行単位として構文解析により抽出し、ループ毎に関数化を行う。ループは実行単位の一例である。
そして、単位構成決定部111は、各ループ内にイタレーション間での依存関係があるか否かを判定する。単位構成決定部111は、各ループ内にイタレーション間での依存関係がないと判定した場合は、各ループをパイプライン化又は展開可能と判定する。ここで展開可能とは、並列化が可能であることを意味する。なお、各ループ内にイタレーション間での依存関係があるか否かの判定は、高位合成ツールを用いて行ってもよい。また、クラスタとしてループ以外の関数等を含んだ記述範囲を関数化してもよい。
単位構成決定部111は、各ループ内にイタレーション間での依存関係があると判定した場合は、各ループを非パイプライン及び展開不可と判定する。
単位構成決定処理S111により、各ループにおけるパイプライン化の可否と展開の可否とを判定できる。このため、パイプライン化又は展開ができないループ(回路)は、所望の回路の探索から除外することにより、探索処理を高速化することができる。
そして、単位構成決定部111は、各ループ内にイタレーション間での依存関係があるか否かを判定する。単位構成決定部111は、各ループ内にイタレーション間での依存関係がないと判定した場合は、各ループをパイプライン化又は展開可能と判定する。ここで展開可能とは、並列化が可能であることを意味する。なお、各ループ内にイタレーション間での依存関係があるか否かの判定は、高位合成ツールを用いて行ってもよい。また、クラスタとしてループ以外の関数等を含んだ記述範囲を関数化してもよい。
単位構成決定部111は、各ループ内にイタレーション間での依存関係があると判定した場合は、各ループを非パイプライン及び展開不可と判定する。
単位構成決定処理S111により、各ループにおけるパイプライン化の可否と展開の可否とを判定できる。このため、パイプライン化又は展開ができないループ(回路)は、所望の回路の探索から除外することにより、探索処理を高速化することができる。
次に、単位構成決定部111は、ソースコード151を高位合成ツールに入力し、ループ毎のレイテンシ、回路規模といった非機能要件を合成結果51として得る。具体的には、単位構成決定部111は、ループ内の1イテレーション処理分のレイテンシ(LOGIC_LAT)と回路規模(AREA)とを、パイプライン化した場合と非パイプライン化の場合とのそれぞれの場合について得る。
なお、このとき、単位構成決定部111は、高位合成ツールにおいて回路共有はしないモードを選択する。通常、回路共有を行うと、レイテンシが伸びる傾向になる。回路のレイテンシは高位合成ツールのオプションで設定が可能であるが、無限に設定できてしまう。本実施の形態では、単位構成決定処理S111時点での回路共有を抑制し、後工程である回路共有指示処理S116においてレイテンシを指定することによる回路共有を行うことで、探索範囲を限定し、高速に最適解を得られるという効果がある。
なお、このとき、単位構成決定部111は、高位合成ツールにおいて回路共有はしないモードを選択する。通常、回路共有を行うと、レイテンシが伸びる傾向になる。回路のレイテンシは高位合成ツールのオプションで設定が可能であるが、無限に設定できてしまう。本実施の形態では、単位構成決定処理S111時点での回路共有を抑制し、後工程である回路共有指示処理S116においてレイテンシを指定することによる回路共有を行うことで、探索範囲を限定し、高速に最適解を得られるという効果がある。
図4は、本実施の形態に係るソースコード151の例を示す図である。
単位構成決定部111は、図4に示すソースコード151からループ記述箇所を構文解析により抽出し、ループ毎にF1,F2との関数化を行う。図4に示すF1のループ記述とF2のループ記述との各々が実行単位515の一例である。
図4に示すソースコード151では各ループ内で依存関係がないため、単位構成決定部111は、各ループ内で依存関係がないと判定し、いずれのループもパイプライン化又は展開が可能であると判定する。
そして、単位構成決定部111は、ソースコード151を高位合成ツールに入力する。
図5は、本実施の形態に係るソースコード151を高位合成ツールに入力した場合の合成結果51を示す図である。図5では、パイプライン化したループ(回路)で高位合成した場合の合成結果51を示しているが、非パイプラインで高位合成した場合も同様にして求められる。
単位構成決定部111は、図4に示すソースコード151からループ記述箇所を構文解析により抽出し、ループ毎にF1,F2との関数化を行う。図4に示すF1のループ記述とF2のループ記述との各々が実行単位515の一例である。
図4に示すソースコード151では各ループ内で依存関係がないため、単位構成決定部111は、各ループ内で依存関係がないと判定し、いずれのループもパイプライン化又は展開が可能であると判定する。
そして、単位構成決定部111は、ソースコード151を高位合成ツールに入力する。
図5は、本実施の形態に係るソースコード151を高位合成ツールに入力した場合の合成結果51を示す図である。図5では、パイプライン化したループ(回路)で高位合成した場合の合成結果51を示しているが、非パイプラインで高位合成した場合も同様にして求められる。
単位構成決定処理S111は、ソースコード151で表される全体回路に含まれるループを実行単位或いは関数として、ループ内の構成を判定するループ内アーキテクチャ判定処理ともいう。また、単位構成決定部111は、ループ内アーキテクチャ判定部ともいう。
以上のように、単位構成決定部111は、各実行単位についてパイプライン化の可否及び展開の可否を判定し、各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する。すなわち、単位構成決定部111により実行単位についてパイプライン化が可能であると判定された場合は、単位内構成候補はパイプライン及び非パイプラインとなる。
<構成決定処理S112>
次に、構成決定処理S112について説明する。
構成決定処理S112において、構成決定部112は、回路の動作を記述したソースコード151であって複数の実行単位を含むソースコード151を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。
具体的には、構成決定部112は、異なるループ記述の依存関係から、構成候補を決定する。すなわち、構成決定部112は、異なるループ記述の依存関係から、異なるループ記述部分の回路が並列実行可能かどうかを判断する。構成決定部112は、異なるループ記述部分の回路が並列実行可能であると判定した場合、異なるループ記述部分の回路の並列実行開始が可能になるタイミングを計測する。
異なるループ記述の依存関係とは、ソースコード151により記述される回路において、ループで表される実行単位間の構成、すなわち回路全体の回路構成を意味する。
次に、構成決定処理S112について説明する。
構成決定処理S112において、構成決定部112は、回路の動作を記述したソースコード151であって複数の実行単位を含むソースコード151を取得し、複数の実行単位で取り得る回路構成の候補を構成候補として決定する。
具体的には、構成決定部112は、異なるループ記述の依存関係から、構成候補を決定する。すなわち、構成決定部112は、異なるループ記述の依存関係から、異なるループ記述部分の回路が並列実行可能かどうかを判断する。構成決定部112は、異なるループ記述部分の回路が並列実行可能であると判定した場合、異なるループ記述部分の回路の並列実行開始が可能になるタイミングを計測する。
異なるループ記述の依存関係とは、ソースコード151により記述される回路において、ループで表される実行単位間の構成、すなわち回路全体の回路構成を意味する。
ループ間のアーキテクチャタイプ(すなわち、回路構成)は3種類ある。1つ目は、直列型である。直列型は、並列実行しない回路構成であり、前段のループ処理が終わってから、後段のループ処理を行う回路構成である。2つ目は、並列型(基本形)である。これは、前段のループと、後段のループが完全に独立して並列に実行する回路構成である。これは上述したバケツリレー方式である。3つ目は並列型(遅延形)である。これは、前段のループ実行の途中から後段のループが開始される回路構成である。
直列型は、レイテンシが大きいが、回路共有の促進が可能という特徴がある。並列型(基本形)は、レイテンシは中程度である。また、並列型(遅延形)はレイテンシを小さくできるという特徴がある。
これら3つの回路構成の中で、直列型、及び並列型(基本形)は、いかなるループ記述でも採用され得る。しかし、並列型(遅延形)は、ソースコードの実装に依存する。
構成決定処理S112では、構成決定部112は、異なるループ記述部分の回路が並列型(遅延形)で構成可能か否かの決定を行う。
構成決定処理S112の手順は以下である。
(1)構成決定部112は、ループ間で共通に利用、即ち共通に参照或いは代入されている変数を構文解析により抽出する。
(2)構成決定部112は、各ループにおいて、変数へのライト及びリードするインデックスを構文解析により抽出する。変数へのライトにおいて、変数が配列でない場合は、最終イタレーション値、即ちループ上限値をインデックスとする。また、変数へのリードにおいて、変数が配列でない場合は、インデックスを0とする。
(3)構成決定部112は、共通する変数のライトとリードとのインデックスの差分絶対値を算出し、これらの中から最大値をDelayとして計算する。
構成決定処理S112の手順は以下である。
(1)構成決定部112は、ループ間で共通に利用、即ち共通に参照或いは代入されている変数を構文解析により抽出する。
(2)構成決定部112は、各ループにおいて、変数へのライト及びリードするインデックスを構文解析により抽出する。変数へのライトにおいて、変数が配列でない場合は、最終イタレーション値、即ちループ上限値をインデックスとする。また、変数へのリードにおいて、変数が配列でない場合は、インデックスを0とする。
(3)構成決定部112は、共通する変数のライトとリードとのインデックスの差分絶対値を算出し、これらの中から最大値をDelayとして計算する。
図4のソースコード151を用いて、具体的に説明する。構成決定処理S112において、構成決定部112が図4のソースコード151を入力した場合について説明する。
(1)構成決定部112は、構文解析を用いて、ループ間で共通に利用されている変数sumとbとを抽出する。
(2)F1のループでsum及びb[i]へ代入されているインデックスを抽出する。sumへ代入されているインデックスはSIZE-1(ループ上限値)である。b[i]へ代入されているインデックスは「0・・・SIZE-1(+1)」である。ここで、・・・は()内に示す数だけ順に加算されていることを意味する。つまり、0,1,2,3,・・・,SIZE-1と同義である。
F2のループではsum及びb[i]はリードである。リードは、sum及びb[i]及びb[i+1]であり、それぞれのインデックスは0、「0・・・SIZE-1(+1)」、「1・・・SIZE-2(+1)」である。
(3)次にDelayを算出する。
例では、sumの場合、|(SIZE-1)-(0)|=SIZE-1である。b[i]の場合、|(0・・・SIZE-1)-(0・・・SIZE-1)|=0・・・0(0)である。b[i+1]の場合、|(0・・・SIZE-1)-(1・・・SIZE-2)|=1・・・1(0)である。よって、sum及びb[i]及びb[i+1]のうちインデックスの差分絶対値の最大値はSIZE-1である。
(1)構成決定部112は、構文解析を用いて、ループ間で共通に利用されている変数sumとbとを抽出する。
(2)F1のループでsum及びb[i]へ代入されているインデックスを抽出する。sumへ代入されているインデックスはSIZE-1(ループ上限値)である。b[i]へ代入されているインデックスは「0・・・SIZE-1(+1)」である。ここで、・・・は()内に示す数だけ順に加算されていることを意味する。つまり、0,1,2,3,・・・,SIZE-1と同義である。
F2のループではsum及びb[i]はリードである。リードは、sum及びb[i]及びb[i+1]であり、それぞれのインデックスは0、「0・・・SIZE-1(+1)」、「1・・・SIZE-2(+1)」である。
(3)次にDelayを算出する。
例では、sumの場合、|(SIZE-1)-(0)|=SIZE-1である。b[i]の場合、|(0・・・SIZE-1)-(0・・・SIZE-1)|=0・・・0(0)である。b[i+1]の場合、|(0・・・SIZE-1)-(1・・・SIZE-2)|=1・・・1(0)である。よって、sum及びb[i]及びb[i+1]のうちインデックスの差分絶対値の最大値はSIZE-1である。
なお、後述する解析処理S114で並列数Nが指定された場合、ループを展開して同様に計算する。
このように、構成決定部112は、複数のループ記述に共通の変数のインデックスに基づいて複数のループ記述の依存関係を判定する。
構成決定処理S112は、ソースコード151で表される全体回路に含まれる異なるループ記述部分の回路が並列型(遅延形)で構成可能か否かの決定を行う。構成決定処理S112は、ループ間アーキテクチャ判定処理ともいう。また、構成決定部112は、ループ間アーキテクチャ判定部ともいう。
構成決定処理S112は、ソースコード151で表される全体回路に含まれる異なるループ記述部分の回路が並列型(遅延形)で構成可能か否かの決定を行う。構成決定処理S112は、ループ間アーキテクチャ判定処理ともいう。また、構成決定部112は、ループ間アーキテクチャ判定部ともいう。
以上のように、構成決定部112は、複数のループ記述の回路構成について並列型(遅延形)で構成可能かを判定し、複数のループ記述の回路構成の構成候補を決定する。
<判定処理S113>
判定処理S113では、判定部113は、複数のループ記述の回路構成を、構成決定処理S112で決定された構成候補とした場合の回路の特性を回路特性522として算出する。そして、判定部113は、回路特性522が閾値521を満たす場合にその構成候補を決定回路構成310として出力する。また、判定部113は、回路特性522が閾値521を満たす場合に複数の実行単位515の各実行単位515の単位内構成候補を決定単位内構成311として出力する。
具体的には、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能(回路特性522)を計算する。このとき、判定部113は、実行単位の回路構成候補毎に、さらに、各実行単位の単位内構成候補毎に回路特性522を算出し、回路特性522を含む非機能要件結果52を算出する。判定部113は、回路のレイテンシと回路の入力データ充填期間(DT)とを含む回路特性522を算出する。
判定部113は、算出した非機能要件結果52が記憶部150に記憶されている非機能要件152(閾値521)を満たしているか否かの判定を行う(ステップS113a)。
判定処理S113では、判定部113は、複数のループ記述の回路構成を、構成決定処理S112で決定された構成候補とした場合の回路の特性を回路特性522として算出する。そして、判定部113は、回路特性522が閾値521を満たす場合にその構成候補を決定回路構成310として出力する。また、判定部113は、回路特性522が閾値521を満たす場合に複数の実行単位515の各実行単位515の単位内構成候補を決定単位内構成311として出力する。
具体的には、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能(回路特性522)を計算する。このとき、判定部113は、実行単位の回路構成候補毎に、さらに、各実行単位の単位内構成候補毎に回路特性522を算出し、回路特性522を含む非機能要件結果52を算出する。判定部113は、回路のレイテンシと回路の入力データ充填期間(DT)とを含む回路特性522を算出する。
判定部113は、算出した非機能要件結果52が記憶部150に記憶されている非機能要件152(閾値521)を満たしているか否かの判定を行う(ステップS113a)。
図6は、本実施の形態に係る判定処理S113において用いられる単位内構成(ループ内アーキテクチャ)の計算式31である実行単位計算式3131を示す図である。
また、図7は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31である回路構成計算式3132を示す図である。図8は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31であるDT計算式3133を示す図である。
ここで、LOOPは、ループ数である。Nは、並列数である。LOGIC_LATは、1イテレーション分レイテンシである。FNは、ループ番号Nの処理であり、サンプル(具体例)ではF1とF2がある。FNcycleは、FNのレイテンシである。Delayn-1,nは、FN番目とFN-1番目の上述した構成決定処理S112で求めた距離である。DII(Data Initiation Interval)は、パイプライン化した場合のスループットであり、これは高位合成ツールでも同様に定義される。
また、図7は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31である回路構成計算式3132を示す図である。図8は、本実施の形態に係る判定処理S113において用いられる回路構成(ループ間アーキテクチャ)の計算式31であるDT計算式3133を示す図である。
ここで、LOOPは、ループ数である。Nは、並列数である。LOGIC_LATは、1イテレーション分レイテンシである。FNは、ループ番号Nの処理であり、サンプル(具体例)ではF1とF2がある。FNcycleは、FNのレイテンシである。Delayn-1,nは、FN番目とFN-1番目の上述した構成決定処理S112で求めた距離である。DII(Data Initiation Interval)は、パイプライン化した場合のスループットであり、これは高位合成ツールでも同様に定義される。
判定部113は、実行単位計算式3131を用いて、実行単位のレイテンシ、すなわちループ内のレイテンシを算出する。そして、判定部113は、実行単位のレイテンシと、回路構成計算式3132とを用いて、回路全体の回路構成(ループ間アーキテクチャ)のレイテンシを算出する。また、判定部113は、実行単位のレイテンシと、DT計算式3133とを用いて、回路全体の回路構成(ループ間アーキテクチャ)のDTを算出する。
即ち、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能として、レイテンシとDTとを非機能要件結果52として算出する。
即ち、判定部113は、回路全体の回路構成(ループ間アーキテクチャ)の非機能として、レイテンシとDTとを非機能要件結果52として算出する。
図9及び図10は、図4に示すソースコード151から算出された非機能要件結果52を示す図である。図9は、ソースコード151の回路構成が直列型の場合の非機能要件結果52を示す。また、図10は、ソースコード151の回路構成が並列型の場合の非機能要件結果52を示す。
図9及び図10に示すように、判定部113は、複数の実行単位の各実行単位の特性を単位毎特性として算出し、算出した単位毎特性に基づいて回路全体の回路特性522を算出する。また、図9及び図10に示すように、判定部113は、回路特性522を、複数の実行単位の各実行単位の単位内構成候補毎に算出する。すなわち、判定部113は、F1とF2との各々について、パイプラインの場合と非パイプラインの場合との単位内構成候補毎の単位毎特性を算出する。そして、算出した単位内構成候補毎の単位毎特性に基づいて、回路特性522を算出する。
図9及び図10に示すように、判定部113は、複数の実行単位の各実行単位の特性を単位毎特性として算出し、算出した単位毎特性に基づいて回路全体の回路特性522を算出する。また、図9及び図10に示すように、判定部113は、回路特性522を、複数の実行単位の各実行単位の単位内構成候補毎に算出する。すなわち、判定部113は、F1とF2との各々について、パイプラインの場合と非パイプラインの場合との単位内構成候補毎の単位毎特性を算出する。そして、算出した単位内構成候補毎の単位毎特性に基づいて、回路特性522を算出する。
図3のステップS113aにおいて、判定部113は、回路特性522が閾値521を満たすか否かを判定する。具体的には、判定部113は、ソースコード151から算出された非機能要件結果52が非機能要件152を満たすか否かを判定する。
判定部113は、非機能要件結果52が非機能要件152を満たしていないと判定した場合は、解析処理S114に進む。一方、判定部113は、非機能要件結果52が非機能要件152を満たすと判定した場合は、回路共有指示処理S115に進む。
判定部113は、非機能要件結果52が非機能要件152を満たしていないと判定した場合は、解析処理S114に進む。一方、判定部113は、非機能要件結果52が非機能要件152を満たすと判定した場合は、回路共有指示処理S115に進む。
<解析処理S114>
解析処理S114において、解析部114は、判定部113により回路特性522が閾値521を満たさないと判定された場合、単位毎特性に基づいて構成を変更する実行単位515を解析する。具体的には、非機能要件結果52が非機能要件152を満たさない場合、非機能要件152を満たすための改善ポイントを解析する。解析部114は、改善のための指示を改善指示として単位構成決定処理S111に出力し、単位構成決定処理S111に処理を戻す。
解析処理S114において、解析部114は、判定部113により回路特性522が閾値521を満たさないと判定された場合、単位毎特性に基づいて構成を変更する実行単位515を解析する。具体的には、非機能要件結果52が非機能要件152を満たさない場合、非機能要件152を満たすための改善ポイントを解析する。解析部114は、改善のための指示を改善指示として単位構成決定処理S111に出力し、単位構成決定処理S111に処理を戻す。
具体的には、解析部114は、レイテンシを表すサイクル数が非機能要件152を満たさない場合、各実行単位のレイテンシ見積もり値が最も大きい実行単位を抽出する。そして、解析部114は、抽出した実行単位について、並列度Nを2にする、或いは周波数を変更する等の改善指示を単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、設計を改善し、再度評価を行う。
また、解析部114は、非機能要件152としての回路規模が満たせない場合は、現在のLOGIC_LAT値から1を足した値をLOGIC_LATとして定義する改善指示を単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、高位合成ツール上の回路共有モードをオンにして、高位合成を実行する。先の単位構成決定処理S111では、回路共有モードをオフにして高位合成を実行していた。つまり、レイテンシは最も短く、回路規模は大きいものである。非機能要件152としての回路規模が満たせない場合は、回路共有モードをオンにするが、この場合、高位合成ツールは、どの程度、回路共有をすべきかが分からない。これはレイテンシが設定されていないからである。レイテンシを設定することで、限られた時間制約のもと回路共有を行うことができる。つまり、この処理は、非機能要件であるレイテンシを可能な限り維持しつつ、回路共有を探索する方法であり、回路規模共有の探索が高速に行える。
また、解析部114は、非機能要件152としての回路規模が満たせない場合は、現在のLOGIC_LAT値から1を足した値をLOGIC_LATとして定義する改善指示を単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、高位合成ツール上の回路共有モードをオンにして、高位合成を実行する。先の単位構成決定処理S111では、回路共有モードをオフにして高位合成を実行していた。つまり、レイテンシは最も短く、回路規模は大きいものである。非機能要件152としての回路規模が満たせない場合は、回路共有モードをオンにするが、この場合、高位合成ツールは、どの程度、回路共有をすべきかが分からない。これはレイテンシが設定されていないからである。レイテンシを設定することで、限られた時間制約のもと回路共有を行うことができる。つまり、この処理は、非機能要件であるレイテンシを可能な限り維持しつつ、回路共有を探索する方法であり、回路規模共有の探索が高速に行える。
以上のように、解析処理S114では、目標となる非機能要件152を満たす回路を高速に探索するための、改善効果が大きい箇所を判断し、改善指示を行うことが可能になるため、効率的な探索が可能となる。
図4のソースコード151を例として説明する。仮に非機能要件152のレイテンシを1000、DTを1000とする。図9(直列型)及び図10(並列型)に示した非機能要件結果52では、非機能要件152のレイテンシ及びDTを満たしていない。
解析部114は、非機能要件結果52が非機能要件152を満たせていないと判定する。
解析部114は、非機能要件結果52が非機能要件152を満たせていないと判定する。
解析部114は、図9及び図10の非機能要件結果52に基づいて、Fcycleの大きい値を削減するために、並列化を行う。並列化対象となる実行単位(すなわち関数あるいはロジック)は、レイテンシが大きいF2とする。レイテンシの大小は、例えば、レイテンシの総和等から判断する。この例では、F1が非パイプ、F2がパイプの場合は、F1のほうが大きいが、簡単のため、F2の並列化を行う。解析部114は、実際は、それぞれの実行単位の組み合わせで、適切な改善ポイントを決める。
解析部114は、F2を並列化N=2として指定する改善指示を生成し、単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、F2を並列化N=2とする改善指示を単位構成決定処理S111に出力し、再度評価を行う。
解析部114は、F2を並列化N=2として指定する改善指示を生成し、単位構成決定部111に出力する。単位構成決定処理S111では、単位構成決定部111は、解析部114から出力された改善指示に基づいて、F2を並列化N=2とする改善指示を単位構成決定処理S111に出力し、再度評価を行う。
図11(直列型)及び図12(並列型)に、単位構成決定処理S111において再度計算された非機能要件結果52を示す。図11(直列型)及び図12(並列型)の非機能要件結果52であっても、まだ非機能要件152を満たせない。よって、解析部114は、上記と同様にF1を並列化N=2とする改善指示を単位構成決定処理S111に出力し、再度評価を行う。図13(直列型)及び図14(並列型)に、単位構成決定処理S111において再々度計算された非機能要件結果52を示す。図14の結果より、パイプラインで並列度2のF1と、パイプラインで並列度2のF2とが並列実行する回路構成が非機能要件152を満たす回路構成である決定される。
<回路共有指示処理S115>
次に、図3に戻り説明を続ける。
回路共有指示部115は、判定部113により回路特性522が閾値521を満たすと判定された場合、各実行単位の単位毎特性に基づいて回路共有を指示する。具体的には、回路共有指示部115は、回路全体のレイテンシに影響しない単位内構成のレイテンシを求め、これを高位合成ツールへのオプションとして与える。
この処理は、回路構成として並列型が選択されている場合に限定される。並列型では、上述した計算式のように、実行単位のレイテンシがレイテンシ計算式、及びDT計算式上に現れない実行単位が存在する。例えば、並列型のDT計算式においては、Maxで計算するため、この最大値より小さい値を持つ実行単位のレイテンシを最大値以下に設定しても、全体の性能に影響を与えない。
そこで、該当する単位内構成のレイテンシを最大値までに引きあげる。このようにすることで、実行単位の回路共有が可能になり、かつ一般には回路共有によりレイテンシが伸びてしまうが、この場合に限り、全体のレイテンシには影響しないことなるため、効果的に最適な回路共有が可能になる。
次に、図3に戻り説明を続ける。
回路共有指示部115は、判定部113により回路特性522が閾値521を満たすと判定された場合、各実行単位の単位毎特性に基づいて回路共有を指示する。具体的には、回路共有指示部115は、回路全体のレイテンシに影響しない単位内構成のレイテンシを求め、これを高位合成ツールへのオプションとして与える。
この処理は、回路構成として並列型が選択されている場合に限定される。並列型では、上述した計算式のように、実行単位のレイテンシがレイテンシ計算式、及びDT計算式上に現れない実行単位が存在する。例えば、並列型のDT計算式においては、Maxで計算するため、この最大値より小さい値を持つ実行単位のレイテンシを最大値以下に設定しても、全体の性能に影響を与えない。
そこで、該当する単位内構成のレイテンシを最大値までに引きあげる。このようにすることで、実行単位の回路共有が可能になり、かつ一般には回路共有によりレイテンシが伸びてしまうが、この場合に限り、全体のレイテンシには影響しないことなるため、効果的に最適な回路共有が可能になる。
図4を例とした判定処理S113のステップS113aにおいて非機能要件152を満たすと判定された回路構成は、パイプラインで並列度2のF1と、パイプラインで並列度2のF2とが並列実行する回路構成がであった。図14から、この回路構成は、並列型であり、F1のLOGIC_LATが2で、F2のLOGIC_LATが4である。ここで、F1のLOGIC_LATを4にしても、全体の性能に影響を与えないため、LOGIC_LATを4にして、再度F1を合成する。このようにすることで、回路共有が可能になり、面積を削減できる。
以上のように、ロジック構成判定処理S110により、非機能要件152を満たす回路構成が決定される。
<バッファ構成判定処理S120>
次に、バッファ構成判定部120は、複数の実行単位が決定回路構成310を成す場合の複数の実行単位間のバッファ構成22を決定する。すなわち、バッファ構成判定部120は、ロジック構成判定処理S110において決定された決定回路構成310を実現するためのバッファ構成22を決定する。
次に、バッファ構成判定部120は、複数の実行単位が決定回路構成310を成す場合の複数の実行単位間のバッファ構成22を決定する。すなわち、バッファ構成判定部120は、ロジック構成判定処理S110において決定された決定回路構成310を実現するためのバッファ構成22を決定する。
バッファ構成判定処理S120の手順を以下に示す。
(1)基本構成の決定
バッファ構成判定部120は、バッファの基本構成を、回路全体の回路構成(ループ間アーキテクチャ)が直列型ならShare型、並列型(基本形)ならダブルバッファ型、並列型(遅延型)ならラインバッファ型とする。
(2)SIZEの取得
(2-1)Share型の場合:配列の要素数等より判断する。
(2-2)ダブルバッファ型の場合:配列の要素数等より判断する。
(2-3)ラインバッファ型の場合:遅延量(Delay)とする。
(3)シフトレジスタ化
Share型、ダブルバッファ型、ラインバッファ型共に、配列に対して、複数のリード(参照)がある場合は、要素数のインデックスよりシフトレジスタ化を判定する。
(4)ポート数及びメモリ個数の判断
バッファ構成判定部120は、単位内構成が並列の場合、並列数に応じたポート数、メモリ個数を生成する。
以上の手順でバッファ構成判定部120は、バッファ構成22を決定する。
(1)基本構成の決定
バッファ構成判定部120は、バッファの基本構成を、回路全体の回路構成(ループ間アーキテクチャ)が直列型ならShare型、並列型(基本形)ならダブルバッファ型、並列型(遅延型)ならラインバッファ型とする。
(2)SIZEの取得
(2-1)Share型の場合:配列の要素数等より判断する。
(2-2)ダブルバッファ型の場合:配列の要素数等より判断する。
(2-3)ラインバッファ型の場合:遅延量(Delay)とする。
(3)シフトレジスタ化
Share型、ダブルバッファ型、ラインバッファ型共に、配列に対して、複数のリード(参照)がある場合は、要素数のインデックスよりシフトレジスタ化を判定する。
(4)ポート数及びメモリ個数の判断
バッファ構成判定部120は、単位内構成が並列の場合、並列数に応じたポート数、メモリ個数を生成する。
以上の手順でバッファ構成判定部120は、バッファ構成22を決定する。
<コード変換処理S130及び高位合成実行処理S140>
コード変換処理S130において、コード変換部130は、複数の実行単位の回路構成が決定回路構成310となるように動作記述を変換し、変換した動作記述を変換記述として出力する。さらに、コード変換部130は、複数の実行単位の各実行単位の単位内構成が決定単位内構成311となるように動作記述を変換すると共に高位合成オプションを設定する。さらに、コード変換部130は、バッファ構成判定部120により決定されたバッファ構成22を実現するように動作記述を変換すると共に高位合成オプションを設定する。
コード変換処理S130において、コード変換部130は、複数の実行単位の回路構成が決定回路構成310となるように動作記述を変換し、変換した動作記述を変換記述として出力する。さらに、コード変換部130は、複数の実行単位の各実行単位の単位内構成が決定単位内構成311となるように動作記述を変換すると共に高位合成オプションを設定する。さらに、コード変換部130は、バッファ構成判定部120により決定されたバッファ構成22を実現するように動作記述を変換すると共に高位合成オプションを設定する。
具体的には、コード変換部130は、ロジック構成判定処理S110において決定された決定回路構成310及び決定単位内構成311と、バッファ構成判定処理S120において決定されたバッファ構成22とを取得する。コード変換部130は、決定回路構成310及び決定単位内構成311とバッファ構成とに基づいて、これらの決定回路構成310及び決定単位内構成311とバッファ構成とを実現するために、ソースコードの変換及び挿入と、高位合成オプションの設定とを行う。高位合成ツールによって、その記述方法やオプションは異なるため、テンプレートデザインを用いてソースコード及び高位合成オプションを生成してもよい。
高位合成実行処理S140において、高位合成部140は、コード変換処理S130において生成されたソースコードと高位合成オプションとを高位合成ツールに入力することにより、高位合成実行処理S140を実行し、RTL154及び合成レポート155を出力する。
高位合成実行処理S140において、高位合成部140は、コード変換処理S130において生成されたソースコードと高位合成オプションとを高位合成ツールに入力することにより、高位合成実行処理S140を実行し、RTL154及び合成レポート155を出力する。
以上で、本実施の形態に係る高位合成装置100の高位合成処理S100についての説明を終わる。
***他の構成***
高位合成装置100は、通信装置を備え、通信装置を介して、ソースコード151、非機能要件152、回路仕様153を受信してもよい。また、高位合成装置100は、通信装置を介して、RTL154及び合成レポート155を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップ又はNIC(Network Interface Card)である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
高位合成装置100は、通信装置を備え、通信装置を介して、ソースコード151、非機能要件152、回路仕様153を受信してもよい。また、高位合成装置100は、通信装置を介して、RTL154及び合成レポート155を送信してもよい。この場合、通信装置はレシーバとトランスミッタとを備える。具体的には、通信装置は通信チップ又はNIC(Network Interface Card)である。通信装置はデータを通信する通信部として機能する。レシーバはデータを受信する受信部として機能し、トランスミッタはデータを送信する送信部として機能する。
また、本実施の形態では、高位合成装置100の「部」の機能がソフトウェアで実現されるが、変形例として、高位合成装置100の「部」の機能がハードウェアで実現されてもよい。
図15を用いて、本実施の形態の変形例に係る高位合成装置100xの構成について説明する。
図15に示すように、高位合成装置100xは、処理回路909、入力インタフェース930、出力インタフェース940といったハードウェアを備える。
図15を用いて、本実施の形態の変形例に係る高位合成装置100xの構成について説明する。
図15に示すように、高位合成装置100xは、処理回路909、入力インタフェース930、出力インタフェース940といったハードウェアを備える。
処理回路909は、前述した「部」の機能及び記憶部150を実現する専用の電子回路である。処理回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、又は、FPGA(Field-Programmable Gate Array)である。
「部」の機能は、1つの処理回路909で実現されてもよいし、複数の処理回路909に分散して実現されてもよい。
別の変形例として、高位合成装置100の機能がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、高位合成装置100の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ910、記憶装置920、及び、処理回路909を、総称して「プロセッシングサーキットリ」という。つまり、高位合成装置100の構成が図1及び図10のいずれに示した構成であっても、「部」の機能及び記憶部150は、プロセッシングサーキットリにより実現される。
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアで実現してもよい。
***本実施の形態の効果の説明***
本実施の形態に係る高位合成装置100は、回路の動作を記述した動作記述であるソースコードと、回路の特性を決める非機能要件と、合成対象の回路仕様とを入力として、高位合成処理を行い、ハードウェア記述言語を出力する。この高位合成装置100は、並列実行単位の内部アーキテクチャ及び並列化アーキテクチャを決めるロジック構成判定部と、並列化されたアーキテクチャ間のバッファ構成を決めるバッファ構成判定部とを備える。また、高位合成装置100は、ロジック構成判定部により決められたロジックアーキテクチャとバッファ構成判定部により決められたバッファ構成とを実現するソースコードと高位合成オプションとを生成するコード変換部を備える。よって、本実施の形態に係る高位合成装置100によれば、これまで手動で行ってきた、非機能要件を満たすためのアーキテクチャ設計と、そのアーキテクチャを実現するためのソースコード及び高位合成オプション等の設定を自動かつ高速に行うことができる。さらに、本実施の形態に係る高位合成装置100によれば、設計者に依存せず、短時間で最適な回路の設計が可能になる。
本実施の形態に係る高位合成装置100は、回路の動作を記述した動作記述であるソースコードと、回路の特性を決める非機能要件と、合成対象の回路仕様とを入力として、高位合成処理を行い、ハードウェア記述言語を出力する。この高位合成装置100は、並列実行単位の内部アーキテクチャ及び並列化アーキテクチャを決めるロジック構成判定部と、並列化されたアーキテクチャ間のバッファ構成を決めるバッファ構成判定部とを備える。また、高位合成装置100は、ロジック構成判定部により決められたロジックアーキテクチャとバッファ構成判定部により決められたバッファ構成とを実現するソースコードと高位合成オプションとを生成するコード変換部を備える。よって、本実施の形態に係る高位合成装置100によれば、これまで手動で行ってきた、非機能要件を満たすためのアーキテクチャ設計と、そのアーキテクチャを実現するためのソースコード及び高位合成オプション等の設定を自動かつ高速に行うことができる。さらに、本実施の形態に係る高位合成装置100によれば、設計者に依存せず、短時間で最適な回路の設計が可能になる。
また、本実施の形態に係る高位合成装置100によれば、生成された回路が非機能要件を満たせない場合、非機能要件を改善するアーキテクチャの変更を行う解析部を有するので、非機能要件を満たすまでアーキテクチャの変更を行うことができ、最適な回路の設計を確実にすることができる。
また、本実施の形態に係る高位合成装置100によれば、非機能要件を満たすレイテンシに合わせて、回路共有度を決めることを可能にする回路共有指示部を有するので、最適な回路の設計を効率的にすることができる。
以上、本発明の実施の形態について説明したが、この実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組合せを採用してもよい。つまり、高位合成装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、どのような組合せ、或いは任意のブロック構成で高位合成装置を構成しても構わない。また、高位合成装置は、1つの装置でなく、複数の装置から構成された高位合成システムでもよい。
また、この実施の形態のうち、複数の部分を組合せて実施しても構わない。或いは、この実施の形態のうち、部分的に実施しても構わない。その他、この実施の形態を、全体として或いは部分的に、どのように組合せて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
22 バッファ構成、31 計算式、51 合成結果、52 非機能要件結果、100,100x 高位合成装置、110 ロジック構成判定部、111 単位構成決定部、112 構成決定部、113 判定部、114 解析部、115 回路共有指示部、120 バッファ構成判定部、130 コード変換部、140 高位合成部、150 記憶部、151 ソースコード、152 非機能要件、153 回路仕様、154 RTL、155 合成レポート、310 決定回路構成、311 決定単位内構成、510 高位合成方法、511 動作記述、515 実行単位、520 高位合成プログラム、521 閾値、522 回路特性、909 処理回路、910 プロセッサ、920 記憶装置、921 メモリ、922 補助記憶装置、930 入力インタフェース、940 出力インタフェース、3131 実行単位計算式、3132 回路構成計算式、3133 DT計算式、S100 高位合成処理、S110 ロジック構成判定処理、S120 バッファ構成判定処理、S130 コード変換処理、S140 高位合成実行処理、S111 単位構成決定処理、S112 構成決定処理、S113 判定処理、S114 解析処理、S115 回路共有指示処理。
Claims (12)
- 回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定部と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定部と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成部と
を備えた高位合成装置。 - 前記高位合成装置は、さらに、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述を変換すると共に高位合成オプションを設定するコード変換部を備え、
前記高位合成部は、
前記コード変換部により変換された前記動作記述と前記高位合成オプションを用いて高位合成を実行する請求項1に記載の高位合成装置。 - 前記構成決定部は、
前記複数の実行単位の依存関係に基づいて前記構成候補を決定する請求項1または2に記載の高位合成装置。 - 前記構成決定部は、
前記複数の実行単位に共通の変数に基づいて前記複数の実行単位の依存関係を判定する請求項3に記載の高位合成装置。 - 前記高位合成装置は、さらに、
前記複数の実行単位の各実行単位の取り得る単位内構成の候補を単位内構成候補として決定する単位構成決定部を備え、
前記判定部は、
前記回路の特性を前記複数の実行単位の各実行単位の単位内構成候補毎に算出し、前記回路特性が閾値を満たす場合に前記複数の実行単位の各実行単位の単位内構成候補を決定単位内構成として出力し、
前記高位合成部は、
前記複数の実行単位の各実行単位の単位内構成が決定単位内構成となるように前記動作記述に対して高位合成を実行する請求項1から4のいずれか1項に記載の高位合成装置。 - 前記高位合成装置は、さらに、
前記複数の実行単位が前記決定回路構成の場合の前記複数の実行単位間のバッファ構成を決定するバッファ構成判定部を備え、
前記高位合成部は、
前記バッファ構成を実現するように前記動作記述に対して高位合成を実行する請求項5に記載の高位合成装置。 - 前記判定部は、
前記複数の実行単位の各々の特性を単位毎特性として算出し、前記単位毎特性に基づいて前記回路特性を算出し、
前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たさないと判定された場合、前記単位毎特性に基づいて構成を変更する実行単位を解析する解析部を備えた請求項1から6のいずれか1項に記載の高位合成装置。 - 前記高位合成装置は、さらに、
前記判定部により前記回路特性が閾値を満たすと判定された場合、前記単位毎特性に基づいて回路共有を指示する回路共有指示部を備えた請求項7に記載の高位合成装置。 - 前記判定部は、
前記回路特性として、前記回路のレイテンシと前記回路の入力データ充填期間とを算出する請求項1から8のいずれか1項に記載の高位合成装置。 - 前記実行単位は、ループ記述である請求項1から9のいずれか1項に記載の高位合成装置。
- 構成決定部が、回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定し、
判定部が、前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力し、
高位合成部が、前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成方法。 - 回路の動作を記述した動作記述であって複数の実行単位を含む動作記述を取得し、前記複数の実行単位で取り得る回路構成の候補を構成候補として決定する構成決定処理と、
前記複数の実行単位の回路構成を前記構成候補とした場合の前記回路の特性を回路特性として算出し、前記回路特性が閾値を満たす場合に前記構成候補を決定回路構成として出力する判定処理と、
前記複数の実行単位の回路構成が前記決定回路構成となるように前記動作記述に対して高位合成を実行する高位合成処理と
をコンピュータに実行させる高位合成プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016553026A JP6072383B1 (ja) | 2016-03-10 | 2016-03-10 | 高位合成装置、高位合成方法及び高位合成プログラム |
US16/061,442 US10599803B2 (en) | 2016-03-10 | 2016-03-10 | High level synthesis apparatus, high level synthesis method, and computer readable medium |
PCT/JP2016/057668 WO2017154183A1 (ja) | 2016-03-10 | 2016-03-10 | 高位合成装置、高位合成方法及び高位合成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/057668 WO2017154183A1 (ja) | 2016-03-10 | 2016-03-10 | 高位合成装置、高位合成方法及び高位合成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017154183A1 true WO2017154183A1 (ja) | 2017-09-14 |
Family
ID=57937605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2016/057668 WO2017154183A1 (ja) | 2016-03-10 | 2016-03-10 | 高位合成装置、高位合成方法及び高位合成プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10599803B2 (ja) |
JP (1) | JP6072383B1 (ja) |
WO (1) | WO2017154183A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020255576A1 (ja) * | 2019-06-21 | 2020-12-24 | 株式会社日立製作所 | 高位合成装置及び高位合成方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6072383B1 (ja) * | 2016-03-10 | 2017-02-01 | 三菱電機株式会社 | 高位合成装置、高位合成方法及び高位合成プログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079233A (ja) * | 2010-10-05 | 2012-04-19 | Fujitsu Semiconductor Ltd | 設計データ生成装置、設計データ生成方法及びプログラム |
JP2012118835A (ja) * | 2010-12-02 | 2012-06-21 | Nec Corp | 動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置 |
JP2013235474A (ja) * | 2012-05-10 | 2013-11-21 | Mitsubishi Electric Corp | 回路設計支援装置及び回路設計支援方法及びプログラム |
JP2015095130A (ja) * | 2013-11-13 | 2015-05-18 | 三菱電機株式会社 | 回路設計支援装置及びプログラム |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491640A (en) * | 1992-05-01 | 1996-02-13 | Vlsi Technology, Inc. | Method and apparatus for synthesizing datapaths for integrated circuit design and fabrication |
US5841663A (en) * | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
US6421815B1 (en) * | 1998-01-09 | 2002-07-16 | Synopsys, Inc. | Method and apparatus for optimized partitioning of finite state machines synthesized from hierarchical high-level descriptions |
US6941541B2 (en) * | 2002-07-19 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Efficient pipelining of synthesized synchronous circuits |
US20120036138A1 (en) | 2009-03-31 | 2012-02-09 | Nec Corporation | Method and apparatus for design space exploration in high level synthesis |
US8839255B2 (en) * | 2009-07-23 | 2014-09-16 | Empire Technology Development Llc | Scheduling of threads by batch scheduling |
WO2011125232A1 (en) | 2010-04-09 | 2011-10-13 | Nec Corporation | Method and apparatus for design space exploration acceleration |
US8464190B2 (en) * | 2011-02-17 | 2013-06-11 | Maxeler Technologies Ltd. | Method of, and apparatus for, stream scheduling in parallel pipelined hardware |
JP5985900B2 (ja) | 2012-06-22 | 2016-09-06 | ルネサスエレクトロニクス株式会社 | 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム |
JP6081832B2 (ja) | 2013-03-13 | 2017-02-15 | ルネサスエレクトロニクス株式会社 | 動作合成装置及び動作合成プログラム |
JP6072383B1 (ja) * | 2016-03-10 | 2017-02-01 | 三菱電機株式会社 | 高位合成装置、高位合成方法及び高位合成プログラム |
US10372507B2 (en) * | 2016-12-31 | 2019-08-06 | Intel Corporation | Compute engine architecture to support data-parallel loops with reduction operations |
US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
-
2016
- 2016-03-10 JP JP2016553026A patent/JP6072383B1/ja active Active
- 2016-03-10 US US16/061,442 patent/US10599803B2/en active Active
- 2016-03-10 WO PCT/JP2016/057668 patent/WO2017154183A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079233A (ja) * | 2010-10-05 | 2012-04-19 | Fujitsu Semiconductor Ltd | 設計データ生成装置、設計データ生成方法及びプログラム |
JP2012118835A (ja) * | 2010-12-02 | 2012-06-21 | Nec Corp | 動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置 |
JP2013235474A (ja) * | 2012-05-10 | 2013-11-21 | Mitsubishi Electric Corp | 回路設計支援装置及び回路設計支援方法及びプログラム |
JP2015095130A (ja) * | 2013-11-13 | 2015-05-18 | 三菱電機株式会社 | 回路設計支援装置及びプログラム |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020255576A1 (ja) * | 2019-06-21 | 2020-12-24 | 株式会社日立製作所 | 高位合成装置及び高位合成方法 |
JP2021002185A (ja) * | 2019-06-21 | 2021-01-07 | 株式会社日立製作所 | 高位合成装置及び高位合成方法 |
JP7150668B2 (ja) | 2019-06-21 | 2022-10-11 | 株式会社日立製作所 | 高位合成装置及び高位合成方法 |
US12106029B2 (en) | 2019-06-21 | 2024-10-01 | Hitachi, Ltd. | High-level synthesis device and high-level synthesis method |
Also Published As
Publication number | Publication date |
---|---|
US20190303513A1 (en) | 2019-10-03 |
JP6072383B1 (ja) | 2017-02-01 |
JPWO2017154183A1 (ja) | 2018-03-22 |
US10599803B2 (en) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3860575B2 (ja) | 構成可能な実行ユニットを有する高性能のハイブリッドプロセッサ | |
US10684776B2 (en) | Memory configuration for inter-processor communication in an MPSoC | |
Guo et al. | A compiler intermediate representation for reconfigurable fabrics | |
Abdelhalim et al. | An integrated high-level hardware/software partitioning methodology | |
Wang et al. | PipeCNN: An OpenCL-based FPGA accelerator for large-scale convolution neuron networks | |
US9483597B1 (en) | Opportunistic candidate path selection during physical optimization of a circuit design for an IC | |
US20100095091A1 (en) | Processor, Method and Computer Program | |
CN106462431B (zh) | 在高级综合中提取系统架构 | |
Pursley et al. | High-level low-power system design optimization | |
JP6072383B1 (ja) | 高位合成装置、高位合成方法及び高位合成プログラム | |
JP6246445B1 (ja) | 高位合成装置、高位合成方法及び高位合成プログラム | |
Ronak et al. | Efficient mapping of mathematical expressions into DSP blocks | |
US10878150B1 (en) | Loop optimization in a circuit design netlist | |
US9383981B2 (en) | Method and apparatus of instruction scheduling using software pipelining | |
Takach | Design and verification using high-level synthesis | |
JPWO2019171464A1 (ja) | 設計支援装置および設計支援プログラム | |
JP6752393B1 (ja) | 設計支援システムおよび設計支援プログラム | |
Augé et al. | User guided high level synthesis | |
US8056030B2 (en) | Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program | |
US20200410149A1 (en) | High-level synthesis apparatus, high-level synthesis method, and computer readable medium | |
Karbachevsky et al. | Hcm: Hardware-aware complexity metric for neural network architectures | |
US20200004503A1 (en) | Information processing device, information processing method, and computer readable medium | |
JP6342065B2 (ja) | 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム | |
JP6545406B2 (ja) | 高位合成装置、高位合成方法および高位合成プログラム | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2016553026 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16893512 Country of ref document: EP Kind code of ref document: A1 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 16893512 Country of ref document: EP Kind code of ref document: A1 |