US20080282069A1 - Method and system for designing a flexible hardware state machine - Google Patents

Method and system for designing a flexible hardware state machine Download PDF

Info

Publication number
US20080282069A1
US20080282069A1 US12/118,384 US11838408A US2008282069A1 US 20080282069 A1 US20080282069 A1 US 20080282069A1 US 11838408 A US11838408 A US 11838408A US 2008282069 A1 US2008282069 A1 US 2008282069A1
Authority
US
United States
Prior art keywords
state machine
processor
state
breakpoint
asic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/118,384
Inventor
Bruce A. Klemin
Michael I. Thompson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
QLogic LLC
Original Assignee
QLogic LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by QLogic LLC filed Critical QLogic LLC
Priority to US12/118,384 priority Critical patent/US20080282069A1/en
Publication of US20080282069A1 publication Critical patent/US20080282069A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Method and system for performing hardware tasks using a hardware state machine and a processor is provided. The method includes, setting a breakpoint for a state machine state; running the processor in a parallel mode with the state machine; passing control to the processor after a breakpoint condition is encountered; performing a task, wherein the processor performs the task which was meant to be performed by the state machine; and transferring control back to the state machine after the processor performs the task. The system includes an Application Specific Integrated Circuit (ASIC) with the state machine, and the processor.

Description

    BACKGROUND
  • 1. Field of the Invention
  • This invention relates in general to the field of designing application specific integrated circuits (“ASICs”), and more specifically, to a hardware state machine for performing specific tasks that interfaces with a processor.
  • 2. Background of the Invention
  • A state machine also called a “finite state machine,” is a computing device designed with operational states required to solve a specific problem. Hardware state machines can be tailored to perform complex task faster by synthesizing to an optimized circuitry. For example, chips in audio, video and imaging controllers are often designed as state machines, because they can provide faster performance at lower cost than a general-purpose processor.
  • A state machine is a model of behavior composed of states, transitions and actions. A state stores information about the past, i.e. it reflects the input changes from the system start to the present moment. A transition indicates a state change and is described by a condition that would need to be fulfilled to enable the transition. An action is a description of an activity that is to be performed at a given moment.
  • State machines are devices that are typically used in a larger ASIC. The process of designing an ASIC includes writing a specification; defining the architecture; designing the state machine in a hardware description language; synthesizing the design into a physical layout; manufacturing in a wafer fabrication facility; testing the functionality of the chip; and releasing the design to production.
  • Conventional hardware state machine/ASIC design approach has shortcomings. For example, when hardware state machines are fabricated, conventional processes do not provide flexibility to change state machine operations to either correct problems with the state machine, or to implement new algorithmic approaches without tedious re-design and re-fabrication efforts. The redesign and re-fabrication is expensive and time consuming, and hence undesirable.
  • Therefore, what is needed is a system and method to efficiently design ASICs/state machines without expensive re-design/re-fabrication steps.
  • SUMMARY OF THE INVENTION
  • In one aspect of the present invention, a method for performing hardware tasks using a hardware state machine and a processor is provided. The method includes, setting a breakpoint for a state machine state; running the processor in a parallel mode with the state machine; passing control to the processor after a breakpoint condition is encountered; performing a task, wherein the processor performs the task which was meant to be performed by the state machine; and transferring control back to the state machine after the processor performs the task.
  • In another aspect of the present invention, an Application Specific Integrated Circuit (ASIC) is provided. The ASIC comprises, a state machine that has plural states and can execute plural tasks associated with the plural states; and a processor that runs in parallel with the state machine, wherein control is passed to the processor from the state machine after a breakpoint condition is encountered and the break point condition is pre-set for a state of the state machine and the processor performs a task which was meant to be performed by the state machine; and control is transferred to the state machine after the processor performs the task.
  • This brief summary has been provided so that the nature of the invention may be understood quickly. A more complete understanding of the invention can be obtained by reference to the following detailed description of the preferred embodiments thereof concerning the attached drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing features and other features of the present invention will now be described with reference to the drawings of a preferred embodiment. In the drawings, the same components have the same reference numerals. The illustrated embodiment is intended to illustrate, but not to limit the invention. The drawings include the following Figures:
  • FIG. 1 shows a conventional process flow diagram for designing/fabricating ASICs and how the shortcomings are minimized, according to one aspect of the present invention;
  • FIG. 2 is a top-level system diagram of an ASIC with a state machine working in parallel with a processor, according to one aspect of the present invention; and
  • FIG. 3 is a process flow diagram snowing interaction between a hardware state machine and a processor, according to yet another aspect of the present invention.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • To facilitate an understanding of the preferred embodiment, the general process for designing an ASIC will be described. The specific architecture and operation of the preferred embodiment will then be described with reference to the general description.
  • FIG. 1 illustrates the problem associated with designing a state machine according to a conventional process flow and how it is minimized, according to one aspect of the present invention.
  • The process starts in step S100, when the specification for the ASIC is defined. The design architecture is built in step S101 and the register transfer logic (“RTL”) design is completed in step S102. Thereafter, the physical design is completed in step S103 and the masks for actual fabrication is performed in step S104.
  • Wafer fabrication occurs in step S105 and the chip assembly is tested in step S106. A functional laboratory test is performed in step S107. If the functional test is successful, then the chip is released for production in step S110.
  • In the conventional processes, if the functional test fails and any changes have to be made in the ASIC or state machines, the design process for the change is repeated from step S102. This iterative process continues until the chip is acceptable. This is expensive and tedious.
  • The present invention solves this problem by using a processor inside the ASIC to control the state machine, thereby, reaching the final goal of production quickly and inexpensively. In step S109, after the functional laboratory test, control is passed to a processor and the processor can be programmed to perform a function (typically the function that failed in the functional test) efficiently. Once the processor solves the functional problems, the chip is sent for production in step S110. Details regarding steps S109 are provided below with respect to FIGS. 2 and 3.
  • FIG. 2 shows a system diagram of an ASIC 210 that includes a general-purpose state machine 200 operationally coupled to a processor 203 (via bus (or connection) 204). ASIC 210 also include a control register 207, status register 208 and other components like random access memory 205 and logic 206.
  • State machine 200 is a model of behavior composed of states, transitions and actions. A state 201 stores information about the past, i.e. it reflects the input changes from the system start to a present moment. A transition 202 indicates a state change and is described by a condition that would need to be fulfilled to enable the transition. An action is a description of an activity that is to be performed at a given moment.
  • Processor 203 is an embedded processor used for controlling the state machine 200. Processor 203 can be custom designed for lower power and lower area or can be bought from companies like ARM®, Tensilica® and others. One skilled in the art would appreciate that processor 203 executes instructions from an image loaded into random access memory (RAM) (or any other type of memory) 205.
  • Control register 207 is programmed with break point information for each state (for example, for State 1, State 2 and State 3). When a breakpoint condition is encountered (or occurs) at any given time, control from the state machine 200 is passed to processor 203. Status register 208 stores the status of each task for each state. Processor 203 then performs the task and after it completes the task it updates status register 208 and control is then passed back to state machine 200.
  • Hence, when an ASIC 210 is being tested (107) and a problem is discovered with a particular task for a particular state of the state machine, then a break point condition can be set in control register 207. When that “problem” state is reached, control is passed to processor 203, which then performs the task. Hence, programming the control register instead alleviates the need for expensive re-design and re-fabrication of ASIC 210.
  • It is noteworthy that although one state machine is shown in FIG. 2, plural state machines can be controlled by processor 203, according to one aspect of the present invention.
  • FIG. 3 shows a flow chart where processor 203 controls the state machine 200 using the control and status registers (207 and 208), according to one aspect of the present invention. The process flow starts at step S300 when the control register 207 is programmed with the breakpoint information for Individual states of the state machine 200. For example, state 1, state 2 and state 3 can each have break point conditions and these are stored in control register 207. The breakpoint information is accessible by the state machine 200 and processor 203.
  • In step 302, state machine 200 is in an idle state and in step 301, processor 203 is in an idle state. Both steps S301 and S302 can occur simultaneously.
  • In step S303, the state machine 200 transitions from state 1 (idle state) to a current state.
  • In step 304, a determination is made as to whether a breakpoint is set by reading a control register 207 bit for this state (i.e. the step S303 state). State machine 200 checks control register 207 to see if a bit has been set for the current state. If the control register 207 bit is set, then in step 305, control is transferred to processor 203 via the status register 208.
  • In step S306, processor 203 performs the task that the state machine was intended to perform. After the task is completed, in step S307, processor 203 sets a status bit in status register 208. Thereafter, in step S308, control is passed back to the state machine 200. At this point, if there are no more states in the state machine, the process ends in step S310.
  • If a break point condition is not reached or set, then in step S309, the task is performed by state machine 200 in the current state and the state machine moves to the next state in step S309. This continues until the process ends in step S310.
  • As illustrated above, when an ASIC has problems, processor 203 performs certain functions to overcome the problems associated with certain state machine performed tasks. Hence, changes can be made to algorithms and any other chip functionality easily without expensive re-design/fabrication costs.
  • In one aspect, the present invention provides a method and apparatus for designing a hardware state machine to perform hardware tasks by using a processor to control the state machine, thereby providing flexibility to the state machine.
  • In another aspect, the present invention provides a mechanism to perform algorithms and changes after the state machine has been fabricated.
  • Although the present invention has been described with reference to specific embodiments, these embodiments are illustrative only and not limiting. Many other applications and embodiments of the present invention will be apparent in light of this disclosure and the following claims.

Claims (14)

1.-13. (canceled)
14. A method for performing hardware tasks in an application specific integrated circuit (ASIC) with a hardware state machine and a processor, the method comprising:
the state machine transitioning to a current state;
the state machine reading a control register to determine whether a breakpoint is set for the current state;
where the breakpoint is set for the current state, transferring control to the processor via a status register;
the processor performing a task that the state machine was intended to perform;
after the task is completed, the processor setting a status bit in the status register; and
transferring control back to the state machine;
wherein the ASIC comprises the hardware state machine and the processor in a single component.
15. The method of claim 14, further comprising programming the control register with breakpoint information for individual states of the state machine.
16. The method of claim 14, further comprising the status register storing a status of each of a plurality of tasks, each task corresponding to a state of the state machine.
17. The method of claim 14, wherein the breakpoint is set for any or all states of the state machine.
18. The method of claim 14, wherein the state machine reads the control register each time the state machine transitions from a first state to a second state to determine if a breakpoint is set for the second state.
19. The method of claim 14, wherein the processor for the ASIC is an embedded processor.
20. The method of claim 14, further comprising setting additional breakpoint conditions for a plurality of additional states for a plurality of additional state machines, and the processor performs a plurality of additional tasks associated with the plurality of additional states.
21. An application specific integrated circuit (ASIC), comprising:
a hardware state machine configured to execute a plurality of tasks associated with a plurality of states;
a random access memory (RAM);
a processor configured to control the state machine and to execute instructions from images loaded into the RAM;
a control register programmed with breakpoint information for at least one of the states; and
a status register;
wherein when the state machine transitions to a current state, it is configured to read the control register to determine whether a breakpoint is set for the current state, and where the breakpoint is set for the current state control is transferred to the processor via the status register, and the processor is configured to perform a task that the state machine was intended to perform; and
wherein the ASIC comprises the hardware state machine and the processor in a single component.
22. The ASIC of claim 21, wherein the processor is configured to set a status bit in the status register after the task is completed.
23. The ASIC of claim 21, wherein control is transferred back to the state machine after the task is completed.
24. The ASIC of claim 21, wherein a breakpoint condition is set for any or all states of the state machine.
25. The ASIC of claim 21, wherein the state machine is configured to read the control register each time the state machine transitions from a first state to a second state to determine if a breakpoint is set for the second state.
26. The ASIC of claim 21, wherein the processor is an embedded processor.
US12/118,384 2005-10-18 2008-05-09 Method and system for designing a flexible hardware state machine Abandoned US20080282069A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/118,384 US20080282069A1 (en) 2005-10-18 2008-05-09 Method and system for designing a flexible hardware state machine

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/252,524 US7447874B1 (en) 2005-10-18 2005-10-18 Method and system for designing a flexible hardware state machine
US12/118,384 US20080282069A1 (en) 2005-10-18 2008-05-09 Method and system for designing a flexible hardware state machine

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/252,524 Continuation US7447874B1 (en) 2005-10-18 2005-10-18 Method and system for designing a flexible hardware state machine

Publications (1)

Publication Number Publication Date
US20080282069A1 true US20080282069A1 (en) 2008-11-13

Family

ID=39916589

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/252,524 Active 2026-01-30 US7447874B1 (en) 2005-10-18 2005-10-18 Method and system for designing a flexible hardware state machine
US12/118,384 Abandoned US20080282069A1 (en) 2005-10-18 2008-05-09 Method and system for designing a flexible hardware state machine

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/252,524 Active 2026-01-30 US7447874B1 (en) 2005-10-18 2005-10-18 Method and system for designing a flexible hardware state machine

Country Status (1)

Country Link
US (2) US7447874B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120059957A1 (en) * 2010-09-03 2012-03-08 Plx Technology, Inc. Automatic port accumulation

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375965B (en) * 2018-11-06 2022-04-26 东软集团股份有限公司 State machine processing method and device and readable storage medium
JP7213755B2 (en) * 2019-05-29 2023-01-27 ルネサスエレクトロニクス株式会社 Semiconductor system and semiconductor device

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408622A (en) * 1993-09-23 1995-04-18 Apple Computer, Inc. Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
US5796994A (en) * 1997-01-30 1998-08-18 Vlsi Technology, Inc. Patch mechanism for allowing dynamic modifications of the behavior of a state machine
US5893066A (en) * 1996-10-15 1999-04-06 Samsung Electronics Co. Ltd. Fast requantization apparatus and method for MPEG audio decoding
US5949251A (en) * 1997-08-01 1999-09-07 Vlsi Technology, Inc. Register-based programmable post-silicon system to patch and dynamically modify the behavior of synchronous state machines
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US6052774A (en) * 1997-09-09 2000-04-18 Arm Limited Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
US6199031B1 (en) * 1998-08-31 2001-03-06 Vlsi Technology, Inc. HDL simulation interface for testing and verifying an ASIC model
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
US20030120970A1 (en) * 2001-12-24 2003-06-26 Chih-Yung Chen Method and apparatus for debugging an electronic product using an internal I/O port
US20030154430A1 (en) * 2002-02-14 2003-08-14 Allen W. James On-chip instrumenation
US20040015341A1 (en) * 2000-05-25 2004-01-22 Ferris Gavin Robert Programmable single-chip device and related development environment
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
US20050172105A1 (en) * 2004-01-15 2005-08-04 International Business Machines Corporation Coupling a general purpose processor to an application specific instruction set processor
US7047462B2 (en) * 2002-01-04 2006-05-16 Hewlett-Packard Development Company, Lp. Method and apparatus for providing JTAG functionality in a remote server management controller
US7058855B2 (en) * 2002-07-24 2006-06-06 Infineon Technologies Ag Emulation interface system
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7072818B1 (en) * 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408622A (en) * 1993-09-23 1995-04-18 Apple Computer, Inc. Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US5893066A (en) * 1996-10-15 1999-04-06 Samsung Electronics Co. Ltd. Fast requantization apparatus and method for MPEG audio decoding
US5796994A (en) * 1997-01-30 1998-08-18 Vlsi Technology, Inc. Patch mechanism for allowing dynamic modifications of the behavior of a state machine
US5949251A (en) * 1997-08-01 1999-09-07 Vlsi Technology, Inc. Register-based programmable post-silicon system to patch and dynamically modify the behavior of synchronous state machines
US6052774A (en) * 1997-09-09 2000-04-18 Arm Limited Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
US6199031B1 (en) * 1998-08-31 2001-03-06 Vlsi Technology, Inc. HDL simulation interface for testing and verifying an ASIC model
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7072818B1 (en) * 1999-11-30 2006-07-04 Synplicity, Inc. Method and system for debugging an electronic system
US20040015341A1 (en) * 2000-05-25 2004-01-22 Ferris Gavin Robert Programmable single-chip device and related development environment
US6826717B1 (en) * 2000-06-12 2004-11-30 Altera Corporation Synchronization of hardware and software debuggers
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
US20030101330A1 (en) * 2001-11-29 2003-05-29 Evelyn Duesterwald System and method for dynamically patching code
US20030120970A1 (en) * 2001-12-24 2003-06-26 Chih-Yung Chen Method and apparatus for debugging an electronic product using an internal I/O port
US7047462B2 (en) * 2002-01-04 2006-05-16 Hewlett-Packard Development Company, Lp. Method and apparatus for providing JTAG functionality in a remote server management controller
US6877114B2 (en) * 2002-02-14 2005-04-05 Delphi Technologies, Inc. On-chip instrumentation
US20030154430A1 (en) * 2002-02-14 2003-08-14 Allen W. James On-chip instrumenation
US7058855B2 (en) * 2002-07-24 2006-06-06 Infineon Technologies Ag Emulation interface system
US20050172105A1 (en) * 2004-01-15 2005-08-04 International Business Machines Corporation Coupling a general purpose processor to an application specific instruction set processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120059957A1 (en) * 2010-09-03 2012-03-08 Plx Technology, Inc. Automatic port accumulation
US8327042B2 (en) * 2010-09-03 2012-12-04 Plx Technology, Inc. Automatic port accumulation

Also Published As

Publication number Publication date
US7447874B1 (en) 2008-11-04

Similar Documents

Publication Publication Date Title
US7930535B1 (en) Method and apparatus for loading configuration data
US10289093B1 (en) Runtime adaptive generator circuit
GB2554942A (en) Verifying firmware binary images using a hardware design and formal assertions
US10394989B2 (en) Method for creating an FPGA netlist
US20080282069A1 (en) Method and system for designing a flexible hardware state machine
JP6744806B2 (en) Multiprocessor
US8918690B2 (en) Decreasing power supply demand during BIST initializations
CN111383704B (en) Built-in self-test circuit of memory and test method for memory
JP4853185B2 (en) Information processing system
US8166431B1 (en) Reducing startup time of an embedded system that includes an integrated circuit
JP2005025599A (en) Image processor
CN112912958A (en) Testing read-only memory using built-in self-test controller
JP5279817B2 (en) Test apparatus and test method
Lysaght et al. Configuration controller synthesis for dynamically reconfigurable systems
US11106851B1 (en) Serialization in electronic design automation flows
US20080278195A1 (en) Structure for executing software within real-time hardware constraints using functionally programmable branch table
CN112905235B (en) MCU program execution method and chip
US20070220331A1 (en) Processor comprising an integrated debugging interface controlled by the processing unit of the processor
CN116467908A (en) Finite element model-oriented convergence and iterative optimization algorithm for very small variable parameters
JPH11312102A (en) Reset system for information processor
JP2004302727A (en) Operation check system of fpga
KR100658485B1 (en) Microprocessor development system
TWI269231B (en) Method for reducing boot time under extendable firmware interface structure
US8160860B1 (en) Method and apparatus for event-based simulation of a digital design having a power shut-off feature
CN115004155A (en) Implementing external memory training at runtime

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION