Traditional synchronous circuit designs may be represented using a variety of hardware description languages, higher level description languages, netlists, and schematics. All of these synchronous representations define the functionality of the circuits in the presence of a timing signal used to synchronize operations. Synchronous operations have several advantages, including deterministic behavior, simplified design and testing, and portability. However, there are also occasions when it is desirable to make use of asynchronous operations.
Some embodiments of the disclosed technology are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
Example methods and systems for converting a reset mechanism in a synchronous circuit design into a corresponding asynchronous representation will now be described. In the following description, numerous examples having example-specific details are set forth to provide an understanding of example embodiments. It will be evident, however, to one of ordinary skill in the art that the present examples may be practiced without these example-specific details, and/or with different combinations of the details than are given here. Thus, specific embodiments are given for the purpose of simplified explanation, and not limitation.
Some example embodiments described herein may include a method comprising converting a synchronous circuit design having synchronous state holding blocks into an equivalent asynchronous design using a processor. The processor may be used to identify synchronous state holding blocks that include a reset signal. As part of the conversion process, these synchronous state holding blocks may be converted to corresponding asynchronous dataflow logic blocks that include reset inputs.
Nodes in the dataflow graph that describes an asynchronous circuit operate on data values, referred to as tokens. A token may comprise a data item that can flow through a pipeline. A token may comprise a one-bit value or a multi-bit value. In some embodiments, a replicated reset token may be distributed to the asynchronous dataflow logic block locations. The replicated reset token may operate at a fraction of the operational frequency of the reset signal. Conversion of synchronous circuits that can be performed in this way, and in other ways, will now be described.
The synchronous to asynchronous conversion operation preformed to convert the synchronous netlist 100 into the asynchronous netlist 200 can be effected so that the reset mechanism itself remains unchanged. That is to say, the same reset signal 120 of
For example, this may result in an increase in power consumption, as well as a problem in routing copies of the reset token 220 to a large number of destinations. In the worst case, the reset token can be copied to dataflow logic blocks 250 corresponding to every state holding block 150 of
The proposed modification in the reset token may comprise a reduction in the operational frequency of the reset token 220 by a fixed (e.g., 8), or programmable factor to generate the replicated reset token 320. This can be implemented by the introduction of special circuitry to handle the operational frequency conversion at the input point where the reset signal 120 is initially be received. The operational frequency conversion may be performed by using a wrap-around counter or other methods known in the art. At the reset token destination, such as the location of the dataflow logic block 250 of
The asynchronous reset signal 485 may be produced from the asynchronous reset signal 430 using the clock converter 450. Since the asynchronous reset signal 485 may not be in the same clock domain as the logic circuits 480, an interface circuit such as the clock converter 450 may be used to convert the operational frequency of the asynchronous reset signal 485 into the operational frequency of a clock domain corresponding to the logic circuits 480.
In some example embodiments, the clock converter 450 may, in addition, perform the role of the frequency divider 440 and divide the converted frequency of the asynchronous signal by the same fraction. The logic circuits 460 and 480 may be designated as part of an asynchronous netlist resulting from conversion of synchronous netlists comprising state holding blocks. The process of converting synchronous netlists to asynchronous netlists will be described in the following
An EDIF reader tool 502 has been implemented that takes the EDIF as input, as well as a table that specifies “black-box” modules in the EDIF (e.g. the EDIF cell name “AND2” which comprises a two-input AND gate, etc.) and some details about the EDIF format that may vary from one synthesis tool to the other. The conversion from EDIF into a standardized netlist format may be done in a standard process 507. The final output of the EDIF reader tool 502 may be a synchronous netlist 508. The synchronous netlist 508 may then be converted to an asynchronous netlist 504 using the synchronous to asynchronous conversion module 503. The resulting asynchronous implementation may be equivalent to the synchronous one in terms of the computations performed.
As is known in the art, the .conf file in tool 502 may comprise a configuration file used to specify the output format of the synthesis tool, while the .x1 file may be a library file containing the description of the library elements used by the synthesis tool. The .anf file contains the resulting synchronous netlist 508. Any file formats can be used to specify this information, or the information could be built into the conversion tool 507 itself. The synchronous netlist 508 may then be converted to an asynchronous netlist 504 using the synchronous to asynchronous conversion module 503, the asynchronous format, for example, in the form of a dataflow graph. The resulting asynchronous implementation may be equivalent to the synchronous one in terms of the computation performed.
The described conversion system may operate to generate annotations that translate the performance characteristics of the asynchronous implementation back into the synchronous domain using an annotation generator 505 for validating the timing design of the dataflow graph according to the specifications of the original synchronous representation. This can be performed, for example, by the simulation block 520.
The conversion system 500 described above enables the conversion of a synchronous netlist into an asynchronous implementation, as well as the generation of an annotation that maps the performance characteristics from the asynchronous domain into the synchronous domain. The synchronous netlist may be converted into other formats, in addition to a dataflow graph, including the detailed description of the implementation of the dataflow graph using Verilog or VHDL, or even other high-level languages such as SystemC, Handel C, or C augmented with message-passing operations. The details of the language are not restrictive, as will be evident to a person of ordinary skill in the art after reading this disclosure.
The target asynchronous netlist represents circuits that can be implemented efficiently as fine-grained asynchronous pipelines or synchronous dataflow pipelines. The target netlist may be represented as a dataflow graph.
Operators in the dataflow graph receive tokens on their inputs and produce tokens on their outputs. The change in the value of the token may be used to compute results. Connectivity between operators may be specified by arrows that correspond to communication channels along which tokens can be sent and received. Communication channels may not be buffered, so that sending and receiving a token on a channel corresponds to rendezvous synchronization. The basic building blocks of a dataflow graph are shown in and described now with respect to
A copy 606 is block that replicates the token received on its input to all its outputs. An initial block 607 begins by transmitting a token on its output, and thereafter copies any input token to its output. These blocks 601, 604, 605, 606, and 607 repeatedly receive tokens on their respective inputs, and send tokens on their respective outputs. The merge block 602 has two types of inputs: data inputs (like every other block), and a control input 608. The value of the control input 608 specifies the data input from which a token may be received. This token may then be sent on the output of the merge block 602.
A split block 603 has a dual function. It receives a control value on its control input 609, and a data value on its data input. It sends the data value on the output channel specified by the value of the control input. As is known in the art, a data flow graph may comprise a graphical representation of the flow of data through an information system, such as an asynchronous circuit or gate array. As described above, the various elements shown in
The asynchronous equivalent 800 implements the same computation as the original state holding block 700 of
The upsampler 960 converts the operational frequency of the replicated reset tokens 930 back to its original frequency (e.g., substantially the same as the operational frequency of the reset signal). The upsampler 960 may also update the local reset value register 950 with the current value 965 of the replicated reset token (e.g., the upsampled replicated reset token). The upsampler 960 may be implemented by one or more counters as is known by one of ordinary skill in the art. In an example embodiment, two or more of the modified asynchronous dataflow block 900 may operate to share upsamplers and/or local reset value registers 950.
The MUX 970 may be controlled by the local reset value at its control input 980. For example, when the local reset value is logically true, the MUX 970 may produce a MUX output token with the same value as the initial token (e.g., the previous value of the input 945 of the initial t block 940), which may then be copied by the initial block 940 to the output token 920. Otherwise, the MUX 970 may produce a MUX output token with the same value as the input token 910 just received. Operation in a reverse fashion (e.g., a logical false reset value produces a MUX output token with the same value as the input token) is also possible. This MUX output may be copied to output token 920 by the initial block 940.
At operation 1030, the replicated reset token 320 may be distributed to the location of the asynchronous dataflow logic blocks 350 of
The system 1100 may be a server computer, a client computer, a personal computer (PC), a tablet PC, or any system capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that system. Further, while only a single system is illustrated, the term “system” shall also be taken to include any collection of systems that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example system 1100 may include the processor 1160 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 1170 and a static memory 1180, all of which communicate with each other via a bus 1108. The system 1100 may further include a video display unit 1110 (e.g., a liquid crystal display (LCD) or cathode ray tube (CRT)). The system 1100 also may include an alphanumeric input device 1120 (e.g., a keyboard), a cursor control device 1130 (e.g., a mouse), a disk drive unit 1140, a signal generation device 1150 (e.g., a speaker), and a network interface device 1190.
The disk drive unit 1140 may include a machine-readable medium 1122 on which may be stored one or more sets of instructions (e.g., software) 1124 embodying any one or more of the methodologies or functions described herein. The instructions 1124 may also reside, completely or at least partially, within the main memory 1170 and/or within the processor 1160 during execution thereof by the system 1100, with the main memory 1170 and the processor 1160 also constituting machine-readable media. The instructions 1124 may further be transmitted or received over a network 1182 via the network interface device 1190.
While the machine-readable medium 1022 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium capable of storing, encoding, or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present technology. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to tangible media, including solid-state memories and optical and magnetic media.
Various embodiments for converting reset mechanisms in a synchronous circuit design into a corresponding asynchronous representation have been described. Implementing such circuits may result in reduced power consumption, reduced die area, and increased processing speed. Although the present embodiments have been described, it will be evident that various modifications and changes may be made to these embodiments. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that allows the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the claims. In addition, in the foregoing Detailed Description, it may be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as limiting the claims. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
This application is a continuation of U.S. patent application Ser. No. 12/505,653, filed on Jul. 20, 2009, now issued as U.S. Pat. No. 8,161,435, which is incorporated herein by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5067091 | Nakazawa | Nov 1991 | A |
5272529 | Frederiksen | Dec 1993 | A |
5958077 | Banerjee et al. | Sep 1999 | A |
6301655 | Manohar et al. | Oct 2001 | B1 |
6381692 | Martin et al. | Apr 2002 | B1 |
6625797 | Edwards et al. | Sep 2003 | B1 |
6658550 | Martin | Dec 2003 | B2 |
6690203 | Nystrom et al. | Feb 2004 | B2 |
7157934 | Teifel | Jan 2007 | B2 |
7418676 | Karaki et al. | Aug 2008 | B2 |
7464361 | Sandbote | Dec 2008 | B2 |
7594211 | Tian et al. | Sep 2009 | B1 |
7610567 | Manohar | Oct 2009 | B2 |
7614029 | Manohar | Nov 2009 | B2 |
7647567 | Esposito et al. | Jan 2010 | B1 |
8051396 | Beerel et al. | Nov 2011 | B2 |
8065647 | Stevens | Nov 2011 | B2 |
8086975 | Shiring et al. | Dec 2011 | B2 |
8104004 | Paul et al. | Jan 2012 | B2 |
8108810 | Hoe et al. | Jan 2012 | B2 |
8161435 | Manohar et al. | Apr 2012 | B2 |
20020156995 | Martin et al. | Oct 2002 | A1 |
20020166003 | Nystrom et al. | Nov 2002 | A1 |
20030159078 | Davies et al. | Aug 2003 | A1 |
20040136687 | Ju | Jul 2004 | A1 |
20050160392 | Sandbote | Jul 2005 | A1 |
20050198606 | Gupta et al. | Sep 2005 | A1 |
20050204245 | Lee et al. | Sep 2005 | A1 |
20060075210 | Manohar et al. | Apr 2006 | A1 |
20060120189 | Beerel et al. | Jun 2006 | A1 |
20060190851 | Karaki et al. | Aug 2006 | A1 |
20060233006 | Fant | Oct 2006 | A1 |
20070200608 | Fang et al. | Aug 2007 | A1 |
20070253240 | Manohar et al. | Nov 2007 | A1 |
20070256038 | Manohar | Nov 2007 | A1 |
20070262786 | Manohar et al. | Nov 2007 | A1 |
20080012984 | Wyman et al. | Jan 2008 | A1 |
20080168407 | Manohar | Jul 2008 | A1 |
20090106719 | Stevens | Apr 2009 | A1 |
20090119631 | Cortadella et al. | May 2009 | A1 |
20090210841 | Prakash et al. | Aug 2009 | A1 |
20090217232 | Beerel et al. | Aug 2009 | A1 |
20090288058 | Shiring et al. | Nov 2009 | A1 |
20090319962 | Manohar | Dec 2009 | A1 |
20100005431 | Manohar | Jan 2010 | A1 |
20100205571 | Manohar et al. | Aug 2010 | A1 |
20100268978 | Kelly | Oct 2010 | A1 |
20110016439 | Manohar et al. | Jan 2011 | A1 |
20110066873 | Manohar et al. | Mar 2011 | A1 |
20110078644 | Manohar et al. | Mar 2011 | A1 |
20110307233 | Tseng et al. | Dec 2011 | A1 |
Number | Date | Country |
---|---|---|
2006202262 | Aug 2006 | JP |
101061864 | Sep 2011 | KR |
WO-2007127914 | Nov 2007 | WO |
WO-2008085792 | Jul 2008 | WO |
WO-2008085792 | Jul 2008 | WO |
Entry |
---|
“U.S. Appl. No. 11/650,238, Non-Final Office Action mailed Apr. 17, 2009”, 8 pgs. |
“U.S. Appl. No. 11/650,238, Examiner Interview Summary mailed May 5, 2009”, 2 pgs. |
“U.S. Appl. No. 11/650,238, Notice of Allowance mailed Jun. 23, 2009”, 4 pgs. |
“U.S. Appl. No. 11/650,238, Response filed May 26, 2009 to Non Final Office Action mailed Apr. 17, 2009”, 13 pgs. |
“U.S. Appl. No. 11/740,184, Non-Final Office Action mailed Nov. 19, 2008”, 14 pgs. |
“U.S. Appl. No. 11/740,184, Notice of Allowance mailed Jun. 15, 2009”, 4 pgs. |
“U.S. Appl. No. 11/740,184, Response filed Feb. 19, 2009 to Non-Final Office Action mailed Nov. 19, 2008”, 14 pgs. |
“U.S. Appl. No. 12/505,653 , Response filed Dec. 1, 2011 to Non Final Office Action mailed Sep. 1, 2011”, 11 pgs. |
“U.S. Appl. No. 12/505,653, Non Final Office Action mailed Sep. 1, 2011”, 8 pgs. |
“U.S. Appl. No. 12/505,653, Notice of Allowance mailed Dec. 15, 2011”, 5 pgs. |
“U.S. Appl. No. 12/550,582 , Response filed Jan. 13, 2012 to Non Final Office Action mailed Sep, 15, 2011”, 14 pgs. |
“U.S. Appl. No. 12/550,582, Final Office Action mailed Feb. 10, 2012”, 12 pgs. |
“U.S. Appl. No. 12/550,582, Non Final Office Action mailed Sep. 15, 2011”, 13 pgs. |
“U.S. Appl. No. 12/555,903 , Response filed Dec. 27, 2011 to Non Final Office Action mailed Sep. 27, 2011”, 11 pgs. |
“U.S. Appl. No. 12/555,903, Final Office Action mailed Feb. 6, 2012”, 8 pgs. |
“U.S. Appl. No. 12/555,903, Non Final Office Action mailed Sep. 27, 2011”, 8 pgs. |
“U.S. Appl. No. 12/559,102, Non Final Office Action mailed Feb. 15, 2012”, 9 pgs. |
“U.S. Appl. No. 12/570,629, Non Final Office Action mailed Sep. 23, 2011”, 7 pgs. |
“U.S. Appl. No. 12/570,629, Response filed Dec. 20, 2011 to Non Final Office Action mailed Sep. 23, 2011”, 8 pgs. |
“International Application Serial No. PCT/US07/67618, Written Opinion mailed Feb. 22, 2008”, 4 pgs. |
“International Application Serial No. PCT/US2007/067618, International Preliminary Report on Patentability mailed Nov. 6, 2008”, 7 pgs. |
“International Application Serial No. PCT/US2007/067618, International Search Report mailed Feb. 22, 2008”, 1 pg. |
“International Application Serial No. PCT/US2007/089197, Search Report mailed Jun. 27, 2008”, 4 pgs. |
“International Application Serial No. PCT/US2007/089197, Written Opinion mailed Jun. 27, 2008”, 7 pgs. |
“Japanese Application Serial No. 2009-507982, Office Action mailed Dec. 20, 2011”, 7 pgs. |
“Japanese Application Serial No. 2009-544906, Office Action mailed Jan. 24, 2012”, w/ English Translation, 9 pgs. |
“Korean Application No. 10-2008-7029013, Office Action Response Filed Nov. 1, 2010”, w/ English translation, 11 pgs. |
“Korean Application No. 10-2008-7029013, Office Action mailed Aug. 31, 2010”, (w/ English Summary), 4 pgs. |
Amde, M., et al., “Automating the Design of an Asynchronous DLX Microprocessor”, DAC, (2003), 502-507 pgs. |
Awerbuch, Baruch, et al., “A Time-Optimal Self-Stabilizing Synchronizer Using a Phase Clock”, IEEE Transactions on Dependable and Secure Computing 4(3), (2007), 180-190. |
Blunno, J. C, et al., “Handshake protocols for de-synchronization”, Proc. of ASYNC'04, (2004), 10 pgs. |
Branover, A., et al., “Asynchronous Design by Conversion: Converting Synchronous Circuits into Asychronous Ones”, Proc. of Date'04, (2004), 6 pgs. |
Branover, A., et al., “Asynchronous Design by Conversion: Converting Synchronous Circuits into Asynchronous Ones”, Proceedings of the Design, Automation and Test in Europe Conference and Exhibition (Date '04), (2004), 6 pgs. |
Chelcea, Tiberiu, et al., “Self-Resetting Latches for Asychronous Micro-Pipeline”, (2007), 986-989. |
Devane, Charles J, “Efficient Circuit Partitioning to Extend Cycle Simulation Beyond Synchronous Circuits”, IEEE/ACM International Conference on Computer-Aided Design, (1997), 154-161. |
Fesquet, L., et al., “A Programmable logic architecture for prototyping clockless circuits”, Field Programmable Logic and Applications, (Aug. 24-26, 2005), 293-298. |
Kim, Hoshik, et al., “Relative Timing Based Verification of Timed Circuits and Systems”, Proceedings of the Eighth International Symposium on Asynchronous Circuits and Systems, (Apr. 2002), 10 pgs. |
Leenstra, Jens, et al., “On the design and test of asychronous macros embedded in synchronous systems”, 1989 Proceedings of International Test Conference, (Aug. 1989), 838-845. |
Linder, D. H, et al., “Phased Logic: Supporting the Synchronouus Design Paradigm With Delay-Insensitive Circuitry”, IEEE Transactions on Computers, Vol. 45, (Sep. 1, 1996), 1031-1044. |
Manohar, et al., “An Asynchronous Dataflow FPGA Architecture”, IEEE Transactions on Computers, IEEE Service Centre, Los Alamitos, vol. 53, (Nov. 1, 2004), 1376-1392. |
Masashi, Imai, et al., “Implementation and Evaluation of CAD System for the SDI Model Based Asynchronous Circuits”, Information Processing Society of Japan Research Report, SLDM, 120, Aggregate Information Processing Society of Japan, (Nov. 27, 2003), 115-120. |
Mercer, E. G, et al., “Stochastic cycle period analysis in timed circuits”, The 2000 IEEE International Symposium on Circuits and Systems, 2000. Proceedings. ISCAS 2000 Geneva. vol. 2, (2000), 172-175. |
Mercer, Eric, et al., “Stochastic cycle period analysis in timed circuits”, University of Utah Masters Thesis, Electrical Engineering Department, University of Utah, (May 1999), 78 pgs. |
Oberg, J., et al., “Automatic synthesis of Asynchronous Circuits From Synchronous RTL Descriptions”, Norchip Conference, (Nov. 21, 2005), 1-6. |
Peng, S., et al., “Automated Synthesis for Asynchronic FPGAs”, Symposium on Field Programmable Gate Arrays (FPGA '05), (2005), 11 pgs. |
Singhal, Vigyan, et al., “The Case for Retiming with Explicit Rest Circuitry”, 1996 IEEE/ACM International Conference on Computer-Aided Design, (Nov. 1996), 618-625. |
Teifel, John, et al., “An Asynchronous Dataflow FPGA Architecture”, IEEE Transactions on Computers 53(11), (Nov. 1, 2004), 1376-1392. |
Teifel, John, et al., “Static Tokens: Using Dataflow to Automate Concurrent Pipeline Synthesis”, In 10th Int'l Symposium on Advanced Research in In Asynchronous Circuits and Systems, pp. 17-27, Computer Systems Laboratory, Cornell University, Ithaca, NY, (Apr. 2004), 11 pgs. |
Traver, C., et al., “Cell designs for self-timed FPGAs”, 14th Annual IEEE International, (SEP. 12, 2001), 175-179. |
Wengao, Lu, et al., “A Novel Low-power Readout Structure for TDI ROIC*”, Proceedings of 5th International Conference on ASIC vol. 1, (Oct. 2003), 591-594. |
“U.S. Appl. No. 12/550,582, Notice of Allowance rnailed Sep. 18, 2012”, 6 pgs. |
Number | Date | Country | |
---|---|---|---|
20120180012 A1 | Jul 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12505653 | Jul 2009 | US |
Child | 13427041 | US |