CIRCUIT DESIGN ASSISTANCE DEVICE, CIRCUIT DESIGN ASSISTANCE METHOD, AND CIRCUIT DESIGN ASSISTANCE PROGRAM
Patent Information
- Application Number
- JP2024563839
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2023-04-17
- Publication Date
- 2025-03-26
- Estimated Expiration
- 2043-04-17
AI Technical Summary
Existing high-level synthesis tools generate redundant memory access circuits for multiple modules without considering the performance characteristics of external memories like DDR-SDRAM, leading to inefficient memory use and suboptimal performance.
A circuit design support device that automatically generates a scheduler circuit based on external memory specifications and performance, optimizing parallel external memory access to meet circuit requirement performance by identifying and scheduling memory access operations.
The device achieves performance closer to the desired performance by generating a scheduler circuit that optimizes external memory access, improving efficiency and meeting circuit requirements.
Smart Images

Figure 00000012_0000 
Figure 00000012_0001 
Figure 00000013_0000
Abstract
Description
[Technical field]
[0001] The present disclosure relates to a circuit design support device, a circuit design support method, and a circuit design support program. [Background technology]
[0002] As semiconductor integrated circuits become larger, development of high-level synthesis technology, which synthesizes circuits using high-level languages with a higher level of abstraction than hardware description languages, is progressing. Examples of high-level languages with a higher level of abstraction than hardware description languages include C, C++, SystemC, and Matlab. High-level synthesis technology is also called behavioral synthesis technology.
[0003] High-level synthesis tools may have the function of generating memory access circuits from the read and write descriptions for array variables by modules. Modules are also called functions. Memory access circuits are also called bus interface circuits. When a memory is accessed from multiple modules using existing high-level synthesis tools, a memory access circuit is generated for each module, which may result in redundant circuits.
[0004] Patent Document 1 discloses a method for generating an interface circuit that performs efficient memory access by merging or splitting functions. In Patent Document 1, functions are merged or split when the access pattern to an array variable by multiple modules corresponds to a specific predefined pattern. [Prior art documents] [Patent documents]
[0005] [Patent Document 1] JP 2007-323206 A Summary of the Invention [Problem to be solved by the invention]
[0006] In Patent Document 1, matching with a prepared access pattern makes it possible to reduce the latency and circuit scale related to memory accesses of multiple modules. On the other hand, in Patent Document 1, a memory access circuit is generated without considering the performance characteristics of the memory. For example, in an external memory such as DDR-SDRAM, the performance varies greatly depending on the transaction size. Therefore, when using such an external memory, the memory utilization efficiency may decrease depending on the design of the external memory access circuit and the arbitration method for access from multiple modules, and the desired performance may not be obtained. DDR is an abbreviation for Double-Data-Rate. SDRAM is an abbreviation for Synchronous Dynamic Random Access Memory.
[0007] The present disclosure aims to obtain performance closer to the required performance by automatically generating a scheduler circuit based on the specifications and performance of the external memory. [Means for solving the problem]
[0008] A circuit design support device according to the present disclosure is a circuit design support device that supports circuit design, a scheduling unit that specifies external memory accesses that operate in parallel in the circuit based on a high-level description of the circuit described in a high-level language, the high-level description including a plurality of external memory accesses indicating accesses to an external memory from each of a plurality of modules, a circuit performance requirement that is a performance requirement of the circuit, and external memory information including specifications and performance of the external memory, and determines an issue order of the external memory accesses that operate in parallel so that the performance of the circuit satisfies the circuit performance requirement; and a circuit generation unit that generates a circuit description of an external memory access circuit that includes a scheduler circuit that issues the external memory accesses that operate in parallel in the issue order. Effect of the Invention
[0009] According to the circuit design assistance device of the present disclosure, a scheduler circuit based on the specifications and performance of an external memory is automatically generated, thereby making it possible to obtain performance that is closer to the required performance. [Brief description of the drawings]
[0010] [Figure 1] 1 is a diagram showing an example of the configuration of a circuit design assistance device according to a first embodiment; [Diagram 2] 4 is a flow diagram showing the operation of the circuit design assistance device according to the first embodiment. [Diagram 3] FIG. 2 is a diagram showing an example of a high-level description according to the first embodiment. [Figure 4] FIG. 2 is a diagram showing an example of a variable memory access circuit according to the first embodiment. [Diagram 5] FIG. 4 is a diagram showing the relationship between burst length and latency according to the first embodiment. [Figure 6] FIG. 2 is a diagram showing an example of a data flow according to the first embodiment. [Figure 7] FIG. 4 is a diagram showing an example of a scheduling process according to the first embodiment. [Figure 8] FIG. 2 is a diagram showing an example of an external memory access circuit according to the first embodiment; [Figure 9] FIG. 13 is a diagram showing an example of the configuration of a circuit design assistance device according to a modification of the first embodiment. [Figure 10] FIG. 4 is a diagram showing a comparative example of the circuit design assistance device according to the first embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] The present embodiment will be described below with reference to the drawings. In each drawing, the same or corresponding parts are given the same reference numerals. In the description of the embodiment, the description of the same or corresponding parts will be omitted or simplified as appropriate. The arrows in the drawings mainly indicate the flow of data or the flow of processing.
[0012] Embodiment 1 ***Configuration Description*** FIG. 1 is a diagram showing an example of the configuration of a circuit design assistance device 100 according to the present embodiment. The circuit design support device 100 is a device that supports the design of a circuit such as a semiconductor integrated circuit. The circuit design assistance device 100 is a computer. The circuit design assistance device 100 includes a processor 910, and also includes other hardware such as a memory 921, an auxiliary storage device 922, an input interface 930, an output interface 940, and a communication device 950. The processor 910 is connected to the other hardware via signal lines and controls the other hardware. Note that the hardware configuration shown in FIG. 1 is an example, and other configurations may be used.
[0013] The circuit design assistance device 100 includes, as functional elements, a scheduling unit 110, a circuit generation unit 120, and a storage unit 130. The scheduling unit 110 includes an access variable extraction unit 111, an access requirement determination unit 112, a parallel access specification unit 113, and an order determination unit 114. The storage unit 130 stores a high-level description 61, a circuit required performance 63, external memory information 64, and a circuit description 65.
[0014] The functions of the scheduling unit 110 and the circuit generation unit 120 are realized by software. The storage unit 130 is provided in the memory 921. Note that the storage unit 130 may be provided in the auxiliary storage device 922, or may be provided in a distributed manner in the memory 921 and the auxiliary storage device 922.
[0015] The processor 910 is a device that executes a circuit design support program. The circuit design support program is a program that realizes the functions of the scheduling unit 110 and the circuit generation unit 120. The processor 910 is an IC that performs arithmetic processing. Specific examples of the processor 910 are a CPU, a DSP, and a GPU. IC is an abbreviation for Integrated Circuit. CPU is an abbreviation for Central Processing Unit. DSP is an abbreviation for Digital Signal Processor. GPU is an abbreviation for Graphics Processing Unit.
[0016] The memory 921 is a storage device that temporarily stores data. Specific examples of the memory 921 are SRAM and DRAM. SRAM is an abbreviation for Static Random Access Memory. DRAM is an abbreviation for Dynamic Random Access Memory. The auxiliary storage device 922 is a storage device that stores data. A specific example of the auxiliary storage device 922 is a HDD. The auxiliary storage device 922 may also be a portable storage medium such as an SD (registered trademark) memory card, CF, NAND flash, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, or a DVD. Note that HDD is an abbreviation for Hard Disk Drive. SD (registered trademark) is an abbreviation for Secure Digital. CF is an abbreviation for CompactFlash (registered trademark). DVD is an abbreviation for Digital Versatile Disk.
[0017] The input interface 930 is a port connected to an input device such as a mouse, a keyboard, or a touch panel. Specifically, the input interface 930 is a USB terminal. The input interface 930 may be a port connected to a LAN. USB is an abbreviation for Universal Serial Bus. LAN is an abbreviation for Local Area Network.
[0018] The output interface 940 is a port to which a cable of an output device such as a display is connected. Specifically, the output interface 940 is a USB terminal or an HDMI (registered trademark) terminal. Specifically, the display is an LCD. The output interface 940 is also called a display interface. HDMI (registered trademark) is an abbreviation for High Definition Multimedia Interface. LCD is an abbreviation for Liquid Crystal Display.
[0019] The communication device 950 has a receiver and a transmitter. The communication device 950 is connected to a communication network such as a LAN, the Internet, a telephone line, or Wi-Fi (registered trademark). Specifically, the communication device 950 is a communication chip or a NIC. NIC is an abbreviation for Network Interface Card.
[0020] The circuit design support program is executed in the circuit design support device 100. The circuit design support program is read into the processor 910 and executed by the processor 910. In addition to the circuit design support program, the OS is also stored in the memory 921. The OS is an abbreviation for Operating System. The processor 910 executes the circuit design support program while executing the OS. The circuit design support program and the OS may be stored in an auxiliary storage device 922. The circuit design support program and the OS stored in the auxiliary storage device 922 are loaded into the memory 921 and executed by the processor 910. Note that a part or all of the circuit design support program may be incorporated into the OS.
[0021] The circuit design assistance device 100 may include a plurality of processors that replace the processor 910. These multiple processors share the task of executing the circuit design assistance program. Each of the processors is a device that executes the circuit design assistance program in the same manner as the processor 910.
[0022] Data, information, signal values and variable values used, processed or output by the circuit design support program are stored in the memory 921, the auxiliary storage device 922, or a register or cache memory within the processor 910.
[0023] The "parts" of the scheduling unit 110 and the circuit generation unit 120 may be read as "circuits," "steps," "procedures," "processing," or "circuitry." The circuit design support program causes a computer to execute a scheduling process and a circuit generation process. The "processing" of the scheduling process and the circuit generation process may be read as a "program," "program product," "computer-readable storage medium storing a program," or "computer-readable recording medium recording a program." The circuit design support method is a method performed by the circuit design support device 100 executing the circuit design support program. The circuit design support program may be provided in a state stored in a computer-readable recording medium, or as a program product.
[0024] ***Explanation of Operation*** FIG. 2 is a flow diagram showing the operation of the circuit design assistance device 100 according to the present embodiment. The operation of the circuit design support device 100 according to the present embodiment will be described. The operation procedure of the circuit design support device 100 corresponds to a circuit design support method. Moreover, a program for realizing the operation of the circuit design support device 100 corresponds to a circuit design support program for executing a circuit design support process.
[0025] <Scheduling process: steps S101 to S105> The scheduling unit 110 acquires the high-level description 61, the circuit required performance 63, and the external memory information 64. The scheduling unit 110 identifies external memory accesses that operate in parallel in the circuit based on the high-level description 61, the circuit required performance 63, and the external memory information 64. Then, the scheduling unit 110 determines the issue order 72 of the external memory accesses that operate in parallel such that the circuit satisfies the circuit required performance 63.
[0026] The high-level description 61 is a circuit description in which the circuit to be designed is written in a high-level language. The high-level description 61 includes a plurality of external memory accesses that indicate accesses from each of a plurality of modules to an external memory. The circuit performance requirement 63 is the performance requirement for the entire process in the circuit to be designed. The external memory information 64 is information including the specifications and performance of the external memory.
[0027] The scheduling process is specifically as follows.
[0028] In step S101, the access variable extraction unit 111 acquires the high-level description 61 to be processed. The high-level description 61 is a circuit operation description written in a high-level language such as C, C++, SystemC, or Matlab. In the high-level description 61, processing is defined as a module. A module is a function. The high-level description 61 is written so that a variable corresponding to an external memory can be specified by a directive such as a pragma or a separate input file.
[0029] FIG. 3 is a diagram showing an example of a high-level description 61 according to the present embodiment. In Fig. 3, a C++ program is shown as a high-level description 61. In the example of the high-level description 61 in Fig. 3, funcA and funcB that operate in parallel are described. Also, each of funcA and funcB is described as accessing an external memory.
[0030] <<Access variable extraction process>> In step S102, the access variable extraction unit 111 extracts a plurality of external memory access variables corresponding to a plurality of external memory accesses from the high-level description 61. The access variable extraction unit 111 identifies a directive such as a pragma or a description such as another input file, and extracts variables corresponding to the external memory as external memory access variables. The access variable extraction unit 111 also analyzes the access pattern of the array variable. The access pattern of the array variable is information indicating whether the index of the array variable is sequential or random, etc. The access pattern of the array variable is used when calculating the required performance in the access requirement determination process described later.
[0031] This will be explained using the example in FIG. The access variable extraction unit 111 extracts "#pragma variable=tmp,in,out type=EXTERNAL" from "func_top" in the C++ program in Fig. 3. As a result, the access variable extraction unit 111 extracts that tmp, in, and out are external memory access variables.
[0032] <<Access requirement determination process>> In step S103, the access requirement determination unit 112 determines the minimum requirement 70 of the variable memory access circuit 701, which is a memory access circuit for each of a plurality of external memory access variables.
[0033] FIG. 4 is a diagram showing an example of a variable memory access circuit 701 according to this embodiment. The funcA in Fig. 3 is the module shown in Fig. 4. The variable memory access circuit 701 is a memory access circuit for each external memory access variable. 4, the variable memory access circuit 701 for the external memory access variable "in[N]" is an external memory read circuit, and the variable memory access circuit 701 for the external memory access variable "out[N]" is an external memory write circuit. In the access requirement determination process, the minimum requirement 70 of each variable memory access circuit of the external memory read circuit of in[N] and the external memory write circuit of out[N] is determined for funcA. The same is true for funcB.
[0034] The minimum requirement 70 is a parameter of the variable memory access circuit 701 that satisfies the module performance requirement, which is the performance requirement of the module, and that makes the circuit scale of the variable memory access circuit 701 smaller than a predetermined scale. The access requirement determination unit 112 may determine a plurality of minimum requirements as the minimum requirement 70 . The minimum requirement 70 specifically includes the burst length, the number of simultaneous issues, and the internal buffer size in the variable memory access circuit 701 . Specifically, the access variable extraction process is as follows.
[0035] The access requirement determination unit 112 receives the high-level description 61 and the external memory information 64 as input, and determines the minimum requirement 70 of the variable memory access circuit 701 for each external memory access variable extracted in step S101.
[0036] The external memory information 64 includes the following information: (1) Memory bus specifications: bus width, maximum burst length, maximum number of simultaneous issues (2) Performance: The latency of the external memory for each access size from the external bus of this circuit
[0037] The access size is the unit of a single request from the external memory. The access size is the transfer unit (burst length x bus width) from the perspective of the variable memory access circuit, and in the following, the transfer unit and access size are synonymous.
[0038] The minimum requirement 70 of the variable memory access circuit 701 for each external memory access variable is a parameter of the variable memory access circuit 701 that satisfies the module required performance and has a circuit scale smaller than a predetermined scale. The circuit design assistance device 100 may store a threshold value of the circuit scale, and the access requirement determination unit 112 may determine a plurality of parameters of the variable memory access circuit 701 that have a circuit scale smaller than the threshold value. Alternatively, the access requirement determination unit 112 may determine one parameter of the variable memory access circuit 701 that has the smallest circuit scale. Specifically, the parameters of the variable memory access circuit 701 determined as the minimum requirement 70 are the burst length, the number of simultaneous issues, and the internal buffer size. The internal buffer size may be the number of internal buffer stages.
[0039] The access requirement determination unit 112 determines the minimum requirement for in[N] as follows: Note that the same calculation is performed for out[N] and funcB. (a) Calculate the processing time of funcA when in[N] is replaced with internal memory (memory read latency is a minimum of 1 [cycle]) as the required latency of the module. This required latency of the module becomes the module required performance. (b) Calculate the required throughput of in[N] using the following formula. The required throughput of in[N] is also called the read request throughput. Required throughput = number of array elements in (N) × type size in (4 [bytes]) ÷ (a) (c) Based on the required throughput calculated in (b) and external memory information 64 (bus width, maximum burst length, latency per transfer unit, etc.), the number of simultaneous issues and the burst length that satisfy the following formula are determined. Required throughput [bps] ≦ Maximum throughput of memory access circuit [bps] = (burst length × bus width × number of simultaneous issues) [bit] ÷ latency of transfer unit (burst length × bus width) [s]
[0040] In addition, in the formula (c), the “maximum throughput of the memory access circuit [bps]” is the throughput of the minimum requirement variable memory access circuit, which is determined based on the burst length, bus width, number of simultaneous issues, and transfer unit that satisfy the required throughput calculated from the external memory information (2) described above.
[0041] Here, the calculation method will be shown when the bus width and the required throughput are as follows. Bus width: 64bit - Required throughput: 1.0[Gbps] From formula (c), the combination of the number of simultaneous issues and burst length that satisfies the required throughput is as follows. Burst length 4 x number of simultaneous issues 3: 1.92 [Gbps], required buffer size: 768 bits Burst length 8 x number of simultaneous issues 2: 1.70 [Gbps], required buffer size: 1,024 bits Burst length 16 x number of simultaneous issues 1: 1.28 [Gbps], required buffer size: 1,024 bits
[0042] The required buffer size is calculated using the following formula: Required buffer size = burst length x bus width x number of simultaneous issues
[0043] FIG. 5 is a diagram showing the latency of the external memory for each access size (for each burst length when the bus width is fixed) according to the present embodiment. As shown in Figure 5, the latency of the external memory for each access size (for each burst length when the bus width is fixed) is defined as external memory information (2). Then, by substituting this latency [ns] for the "latency [s] of transfer unit (burst length x bus width)" in formula (c) above, the maximum throughput of the variable memory access circuit can be calculated.
[0044] <<Parallel access specific processing>> In step S104, the parallel access identification unit 113 creates a data flow 71 including a flow of multiple external memory accesses based on the minimum requirement 70 and the high-level description 61, and identifies external memory accesses that operate in parallel. The parallel access identification unit 113 receives the minimum requirement 70 and the high-level description 61 of the variable memory access circuit extracted in step S102 as input. Then, the parallel access identification unit 113 creates a data flow including a flow of external memory accesses, and identifies external memory accesses that operate in parallel.
[0045] FIG. 6 is a diagram showing an example of a data flow according to the present embodiment. Fig. 6 is a diagram in which funcA, funcB and the data flow of each variable memory access circuit 701 are extracted. The data flow of funcA, funcB and each variable memory access circuit 701 results in a pipeline operation as shown in Fig. 6. The parallel access specification process is performed by a process equivalent to a general data flow analysis. 6, the read of in[N], the read of tmp[N], the write of tmp[N], and the write of out[N], which are written in bold, access the external memory simultaneously. The parallel access identification unit 113 extracts a section where these accesses overlap as a parallel access section. The parallel access identifying unit 113 identifies a read of in[N], a read of tmp[N], a write of tmp[N], and a write of out[N], which simultaneously access the external memory, as external memory accesses operating in parallel.
[0046] <<Order determination process>> In step S105, the order determination unit 114 uses the minimum requirements 70 to determine an issue order 72 of the external memory accesses that operate in parallel, identified in step S104, so as to satisfy the circuit required performance 63. The circuit required performance 63 is the required performance of the entire processing of the circuit to be designed, and is the latency and throughput of the entire processing. If the external memory accesses that operate in parallel and are issued in the determined issue order 72 do not satisfy the circuit required performance 63, the order determination unit 114 determines a different issue order so as to satisfy the circuit required performance 63.
[0047] Specifically, the order determination unit 114 uses the minimum requirement 70 as an initial value to determine the parameters of each variable memory access circuit of the external memory accesses operating in parallel and the issue order 72 of the external memory accesses operating in parallel so as to satisfy the circuit required performance 63. If the circuit required performance 63 is not satisfied, the order determination unit 114 searches for parameters that satisfy the circuit required performance 63 by changing the parameters of the variable memory access circuit (number of simultaneous issues, burst length), and determines the issue order 72. In other words, if the circuit required performance 63 is not satisfied, the order determination unit 114 determines other parameters and an issue order so as to satisfy the circuit required performance 63.
[0048] FIG. 7 is a diagram illustrating an example of the order determination process according to the present embodiment. The order determination unit 114 receives as input the parallel access section in which the external memory accesses specified in step S104 operate in parallel, the minimum requirements 70 of the variable memory access circuit extracted in step S103, and the circuit required performance 63. The order determination unit 114 determines the issue order 72 of each transaction and the external memory access specifications of each module.
[0049] For example, the order determination unit 114 makes the determination using the following algorithm. (A) The access requests from each variable memory access circuit are processed in a round-robin fashion. The access requests after the round-robin processing are shown in the upper part of Figure 7. (B) If the circuit performance requirement 63 is satisfied at this point, the scheduling is terminated. If not, the process proceeds to (C). (C) The total latency is reduced by changing the burst length and the number of simultaneous issues so that consecutive access requests (transactions) are merged in order from the one with the longest processing latency among the minimum requirement parameters of 70. (D) Return to (A) and repeat.
[0050] The above algorithm performs scheduling by taking advantage of the property that when commonly used external memories such as DDR-SDRAM have continuous addresses, the latency is smaller than when they are accessed randomly. In addition, the algorithm is not limited to the above, so long as the issue order, the number of simultaneous issues of each module, and the burst length that satisfy the required performance can be obtained based on the same input (the number of simultaneous issues and burst length of the external memory access circuit, and the latency for each transfer size of the external memory bus). For example, an algorithm such as a general mathematical optimization may be applied.
[0051] The minimum requirement used as the initial value may be specified in the access requirement determination process or in the parallel access specification process.
[0052] For example, the access requirement determination unit 112 determines a plurality of minimum requirements as the minimum requirements. Specifically, the minimum requirements are three minimum conditions derived from the above formula (c). Then, the parallel access specification unit 113 specifies external memory accesses that operate in parallel based on one of the plurality of minimum requirements and the high-level description. After that, the order determination unit 114 uses the specified one minimum requirement as an initial value to determine the parameters and issue order of the variable memory access circuit so as to satisfy the circuit required performance 63.
[0053] Also, for example, the access requirement determination unit 112 may determine a plurality of minimum requirements as the minimum requirements and specify one minimum requirement from the plurality of minimum requirements. Specifically, the parameter with the smallest required buffer amount may be selected from the three minimum conditions derived from the above formula (c). After that, the order determination unit 114 uses the specified one minimum requirement as an initial value and determines the parameters and issue order of the variable memory access circuit so as to satisfy the circuit required performance 63.
[0054] <Circuit generation processing> In step S106, the circuit generation unit 120 generates a circuit description 65 of an external memory access circuit that includes a scheduler circuit that issues external memory accesses that operate in parallel in the issue order 72.
[0055] The circuit generation unit 120 generates an external memory access circuit 702 (scheduler, transfer control unit, internal buffer) based on the determined external memory access issue order (address), the number of simultaneous issues, burst length, and internal buffer specifications. The circuit description is generated by, for example, storing IP in a database that allows the above parameters (issuance order (address) of external memory access, number of simultaneous issues, burst length, internal buffer specifications) to be changed. IP is an abbreviation for Intellectual Property. The circuit description is written in a circuit representation such as a high-level description or an RTL description.
[0056] FIG. 8 is a diagram showing an example of an external memory access circuit 702 generated by the circuit generation unit according to the present embodiment. The circuit generator 120 generates an external memory access circuit 702 having the following: (1) A scheduler circuit that controls the access issuing order identified in step S105 (2) A transfer control circuit according to the number of simultaneous issues of read / write requests for each external memory access variable identified in step S105, the burst length, and the bus width (3) An internal buffer that can hold the above data: Number of simultaneous issues x Burst length x Bus width
[0057] By connecting the external memory access circuit 702 generated by the circuit generation unit and funcA and funcB generated from the high-level description 61, a circuit having a configuration as shown in FIG. 8 is generated.
[0058] ***Other configurations*** <Variation 1> In this embodiment, the functions of the scheduling unit 110 and the circuit generation unit 120 are realized by software. As a modified example, the functions of the scheduling unit 110 and the circuit generation unit 120 may be realized by hardware. Specifically, the circuit design assistance device 100 includes an electronic circuit 909 instead of a processor 910 .
[0059] FIG. 9 is a diagram showing an example of the configuration of a circuit design assistance device 100 according to a modified example of this embodiment. The electronic circuit 909 is a dedicated electronic circuit that realizes the functions of the scheduling unit 110 and the circuit generation unit 120. Specifically, the electronic circuit 909 is a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA, an ASIC, or an FPGA. GA is an abbreviation for Gate Array. ASIC is an abbreviation for Application Specific Integrated Circuit. FPGA is an abbreviation for Field-Programmable Gate Array.
[0060] The functions of the scheduling unit 110 and the circuit generation unit 120 may be realized by one electronic circuit, or may be distributed across multiple electronic circuits.
[0061] As another modification, some of the functions of the scheduling unit 110 and the circuit generation unit 120 may be realized by electronic circuits, and the remaining functions may be realized by software. Also, some or all of the functions of the scheduling unit 110 and the circuit generation unit 120 may be realized by firmware.
[0062] Each of the processor and the electronic circuit is also called a processing circuitry. That is, the functions of the scheduling unit 110 and the circuit generation unit 120 are realized by the processing circuitry.
[0063] ***Explanation of the Effects of the Present Embodiment*** FIG. 10 is a diagram showing a comparative example of the circuit design assistance device 100 according to the present embodiment. In FIG. 10, the right diagram shows a circuit to be designed by the circuit design assistance device 100 according to this embodiment, and the left diagram shows a comparative example circuit for comparison with this embodiment.
[0064] In the comparative example, the arbitration circuit must be designed (specified) manually. On the other hand, in the diagram on the right, the scheduler can be automatically generated from the external memory access requirements of functions A and B. In the comparative example, for example, the transfer control and buffer specifications are determined based on the access pattern of each function. Also, when the arbitration circuit is determined manually, it is not possible to change the transfer control (number of simultaneous issues, burst length) or internal buffer size in the external memory access circuit based on the arbitration specifications. On the other hand, in the diagram on the right, the transfer control and buffer specifications for each function can be generated based on the scheduling results that take into account both functions A and B.
[0065] As described above, according to the circuit design assistance device 100 of this embodiment, a scheduler circuit based on performance information of an external memory is automatically generated, thereby making it possible to obtain performance closer to the required performance. Furthermore, according to the circuit design assistance device 100 of this embodiment, a transfer control, internal buffer, and scheduler are generated according to the scheduling results, so that performance can be further improved and a circuit with high utilization efficiency of external memory can be obtained.
[0066] In the above-mentioned first embodiment, each unit of the circuit design assistance device has been described as an independent functional block. However, the configuration of the circuit design assistance device does not have to be the configuration as in the above-mentioned embodiment. The functional blocks of the circuit design assistance device may have any configuration as long as they can realize the functions described in the above-mentioned embodiment. Furthermore, the circuit design assistance device may not be a single device, but may be a system composed of multiple devices. In addition, a plurality of parts of the first embodiment may be combined and implemented. Alternatively, only one part of this embodiment may be implemented. In addition, this embodiment may be combined in any manner as a whole or in part and implemented. That is, in the first embodiment, the embodiments can be freely combined, or any of the components in each embodiment can be modified, or any of the components in each embodiment can be omitted.
[0067] The above-described embodiment is essentially a preferred example, and is not intended to limit the scope of the present disclosure, the scope of application of the present disclosure, and the scope of use of the present disclosure. The above-described embodiment can be modified in various ways as necessary. For example, the procedure described using a flow chart or sequence chart may be modified as appropriate. [Explanation of symbols]
[0068] 61 high-level description, 63 circuit required performance, 64 external memory information, 65 circuit description, 70 minimum requirements, 71 data flow, 72 issue order, 100 circuit design support device, 110 scheduling unit, 111 access variable extraction unit, 112 access requirement determination unit, 113 parallel access specification unit, 114 order determination unit, 120 circuit generation unit, 130 memory unit, 701 variable memory access circuit, 702 external memory access circuit, 909 electronic circuit, 910 processor, 921 memory, 922 auxiliary storage device, 930 input interface, 940 output interface, 950 communication device.
Claims
1. A circuit design support device for supporting circuit design, comprising: a scheduling unit that specifies external memory accesses that operate in parallel in the circuit based on a high-level description of the circuit described in a high-level language, the high-level description including a plurality of external memory accesses indicating accesses to an external memory from each of a plurality of modules, a circuit performance requirement that is a performance requirement of the circuit, and external memory information including specifications and performance of the external memory, and determines an issue order of the external memory accesses that operate in parallel so that the performance of the circuit satisfies the circuit performance requirement; a circuit generation unit that generates a circuit description of an external memory access circuit including a scheduler circuit that issues the external memory accesses that operate in parallel in the issue order; A circuit design support device comprising:
2. The scheduling unit is 2. The circuit design assistance device according to claim 1, wherein, when the external memory accesses that operate in parallel and are issued in the issue order do not satisfy the required circuit performance, a different issue order is determined so as to satisfy the required circuit performance.
3. The scheduling unit is an access variable extraction unit that extracts a plurality of external memory access variables corresponding to a plurality of external memory accesses from the high-level description; an access requirement determination unit that determines minimum requirements of a variable memory access circuit, which is a memory access circuit for each of the plurality of external memory access variables, the minimum requirements being parameters of the variable memory access circuit such that the variable memory access circuit satisfies the required performance of a corresponding module and the circuit scale of the variable memory access circuit is smaller than a predetermined scale; a parallel access identification unit that creates a data flow including a flow of the plurality of external memory accesses based on the minimum requirements and the high-level description, and identifies the external memory accesses that operate in parallel; an order determination unit that uses the minimum requirements as initial values to determine parameters of the variable memory access circuits of the external memory accesses operating in parallel and the issue order so as to satisfy the circuit required performance; The circuit design support device according to claim 2 .
4. The access requirement determination unit is determining a plurality of minimum requirements as the minimum requirements; The parallel access specifying unit identifying the external memory accesses that operate in parallel based on one of the plurality of minimum requirements and the high-level description; The order determination unit is 4. The circuit design support device according to claim 3, wherein the one minimum requirement is used as an initial value to determine parameters of variable memory access circuits and the issue order of each of the external memory accesses operating in parallel so as to satisfy the required circuit performance.
5. The access requirement determination unit is determining a plurality of minimum requirements as the minimum requirements, and identifying one minimum requirement from the plurality of minimum requirements; The order determination unit is 4. The circuit design support device according to claim 3, wherein the one minimum requirement is used as an initial value to determine parameters of variable memory access circuits and the issue order of each of the external memory accesses operating in parallel so as to satisfy the required circuit performance.
6. The order determination unit is 6. The circuit design assistance device according to claim 3, further comprising: determining, when the required circuit performance is not satisfied by the determined parameters and issuance order, other parameters and issuance order so as to satisfy the required circuit performance.
7. The access requirement determination unit is 6. The circuit design support device according to claim 3, wherein a burst length, a number of simultaneous issues, and an internal buffer size in the variable memory access circuit are determined as the minimum requirements.
8. A circuit design support method for use in a circuit design support device for supporting circuit design, comprising: a computer identifies external memory accesses that operate in parallel in the circuit based on a high-level description of the circuit described in a high-level language, the high-level description including a plurality of external memory accesses indicating accesses to an external memory from each of a plurality of modules, a circuit performance requirement that is a performance requirement of the circuit, and external memory information including specifications and performance of the external memory, and determines an issue order of the external memory accesses that operate in parallel so that the performance of the circuit satisfies the circuit performance requirement; A circuit design support method for generating a circuit description of an external memory access circuit including a scheduler circuit that issues the external memory accesses that operate in parallel in the issue order by a computer.
9. A circuit design support program for use in a circuit design support device for supporting circuit design, a scheduling process for identifying external memory accesses that operate in parallel in the circuit based on a high-level description of the circuit described in a high-level language, the high-level description including a plurality of external memory accesses indicating accesses to an external memory from each of a plurality of modules, a circuit performance requirement that is a required performance of the circuit, and external memory information including specifications and performance of the external memory, and for determining an issue order of the external memory accesses that operate in parallel so that the performance of the circuit satisfies the circuit performance requirement; a circuit generation process for generating a circuit description of an external memory access circuit including a scheduler circuit that issues the external memory accesses operating in parallel in the issue order; A circuit design support program that causes a computer to execute the above.