WO2005022338A2 - Improved computerized extension apparatus and methods - Google Patents
Improved computerized extension apparatus and methods Download PDFInfo
- Publication number
- WO2005022338A2 WO2005022338A2 PCT/US2004/027887 US2004027887W WO2005022338A2 WO 2005022338 A2 WO2005022338 A2 WO 2005022338A2 US 2004027887 W US2004027887 W US 2004027887W WO 2005022338 A2 WO2005022338 A2 WO 2005022338A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- extension
- tool
- component
- template
- design
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/08—Intellectual property [IP] blocks or IP cores
Definitions
- the invention relates generally to the field of semiconductor design, and automated design for integrated circuits. More specifically, the invention provides an improved method and apparatus for creating extension components for IC designs described in, inter alia, high level languages.
- CAD computer aided design
- Such computer-aided or automated IC design tools can include modules or programs addressing both the synthesis and optimization processes.
- Synthesis is generally defined as an automatic method of converting a higher level of abstraction to a lower level of abstraction, and can include any desired combination of synthesis techniques which occur at various levels of abstraction.
- So-called "behavioral synthesis” is a design tool wherein the behavior (e.g. inputs, outputs, and functionality) of a desired IC are entered into a computer program to design a device that exhibits the desired behavior.
- synthesis processes which involve different levels of abstraction include architectural level synthesis and logic level synthesis, both of which may be incorporated into the IC design process.
- Architectural level synthesis is primarily concerned with the macroscopic structure of the circuit; it utilizes functional blocks (including information relating to their interconnections and internal functionality).
- Architectural level synthesis includes register transfer level (RTL) synthesis, which can have multi-bit components such as registers and operators.
- Logic level synthesis is concerned with gate level design.
- Logic level synthesis determines a microscopic structure of a circuit and transforms a logic model into an interconnection of instances of library cells. The result of the logic level synthesis is a netlist of logic devices and their interconnections.
- Logic-level synthesizers (so-called synthesis "engines") are available from several commercial vendors. The synthesis process generally begins with the designer compiling a set of IC specifications based on the desired functionality of the target device. These specifications are then encoded in a hardware description language (HDL) such as VHDL® (VHSIC hardware description language) available from IEEE of New York, NY, or Verilog® available from Cadence Design Systems, Inc. of Santa Clara, CA.
- HDL hardware description language
- the specifications define an IC in terms of the desired inputs and outputs, as well as desired functionality such as available memory or clock speed. From the HDL, the designer then generates a "netlist” including a list of gates and their interconnections, which is descriptive of the circuitry of the desired IC. Ultimately, the design is compiled and masks fabricated for producing the physical IC. See, e.g., U. S. Patent No. 6,324,678 to Dangelo, et al. issued November 27, 2001 and entitled “Method and system for creating and validating low level description of electronic design", which discloses a methodology for generating lower-level structural descriptions of complex digital devices from higher- level descriptions and specifications.
- the device is equipped with a co-processor including multiple, programmable processors having extended instruction sets including instructions providing the operations of zero stuffing, CRC computation, partial compare, conditional move, and trie traversal. These instructions allow the processor(s) of the co-processor to more efficiently execute programs implementing data communications protocols. Since each processor is programmable, protocols standards which change may be accommodated. No mechanisms for user configurability or extensibility are provided, however. See also U.S. Patent Nos. 6,175,915 and 6,065,027. WIPO Publication No.
- WO0022553 published April 20, 2000 and entitled "Method And Apparatus For Managing The Configuration And Functionality Of A Semiconductor Design” discloses a fundamental method of managing the configuration, design parameters, and functionality of an integrated circuit (IC) design using a hardware description language (HDL) in the context of a user-operated design environment. Instructions can be added, subtracted, or generated by the designer interactively during the design process, and customized HDL descriptions of the IC design are generated through the use of scripts based on the user-edited instruction set and inputs. The customized HDL description can then be used as the basis for generating "makefiles" for purposes of simulation and/or logic level synthesis. The method further affords the ability to generate an HDL model of a complete device, such as a microprocessor or DSP. A library mechanism for different types of extensions is also provided.
- HDL hardware description language
- HW/SW hardware/software co-design
- This approach generates a processor design as well as one or more tools (e.g., assemblers, compilers, simulators, etc.) that are in some respects specific to the generated (and customized) hardware design.
- Changes to the hardware design generally dictate a change to the software tools as well.
- U.S. Patent No. 5,949,993 to Fritz issued September 7, 1999 and entitled "Method for the generation of ISA simulators and assemblers from a machine description” discloses a method for generating software development tools to be used in hardware and software development.
- the invention is utilized by processing a hardware description and a syntax description of programmable electronics, such as a microprocessor, and generating a set of development tools useful to a hardware and/or software developer.
- Some of these tools include, for example, simulators, assemblers, decoders, disassemblers, behavior semantics, and attribute grammars.
- the tool includes a description of customized processor instruction set extensions in a standardized language to develop a configurable definition of a target instruction set, a Hardware Description Language description of circuitry necessary to implement the instruction set, and development tools such as a compiler, assembler, debugger and simulator which can be used to develop applications for the processor and to verify it.
- Implementation of the processor circuitry can be optimized for various criteria such as area, power consumption, speed and the like. Once a processor configuration is developed, it can be tested and inputs to the system modified to iteratively optimize the processor implementation.
- the "description" language taught in the '683 patent referenced above TIE or Tensilica Instruction Extension language
- TIE Tensilica Instruction Extension language
- Cadence nML language is also of note; see “Hartoog, et al, "Generation of Software Tools From Processor Descriptions for Hardware/Software Codesign,” ACM, Jun. 1997, pp. 303-306.
- a somewhat similar co-design approach is described in "Retargetable Code Generation based on Structural Processor Descriptions", Leupers, et al, Design Automation for Embedded Systems, vol. 3, no. 1, January 1998, which describes the MIMOLA/TREEMOLA design language and tool suite.
- the MIMOLA approach is generally more akin to a hardware description language (such as for example VHDL) than the Expression, nML, LISA, or ISDL approaches, which are to a large extent geared toward cycle-accurate behavior (instruction) modeling.
- extension components are usually designed to interface to a pre-defined target architecture, such as a specific processor core or variant.
- An extension component such as an extension instruction, designed for one processor core, will not be compatible with any other processor cores.
- hardware IP is modeled in different languages, usually description languages (e.g., HDL) are used for defining synthesizable models, and C/C++ is used for defining behavioral models. If a common language is used for creating the extension IP component, then the functionality is usually restricted, and the implementation will not be optimal because of the additional language conversion process. This also makes it difficult to support new modeling languages.
- hardware IP models are often implemented with several different architectural models, using different levels of abstraction.
- a simulation model may be instruction-accurate or cycle-accurate
- a hardware model may use behavioral HDL or synthesis HDL.
- the prior art systems previously described herein generally cannot support different architectural models and models with different levels of abstraction.
- hardware IP designs can be extended in a number of different ways, such as by adding instructions, core registers and memory mapped registers for processor IP cores.
- the extension of hardware IP is restricted to a limited number of interfaces types, due to the complexity of supporting different extension types.
- hardware extensions when hardware extensions are created, in addition to the model being created, there are a number of other aspects of design implementation that must be considered. For example, the hardware extension will require verification, documentation, and possibly synthesis scripts.
- Processor extensions may require assembler and compiler extension and support files.
- Common prior art approaches rely on separate mechanisms for generating the simulation models and support files, thereby resulting in inefficiencies and potentially incompatibilities.
- improved methods and apparatus would (i) facilitate implementation of new extensions, (ii) permit porting of the extensions on various similar or heterogeneous platforms or architectures, and (iii) support different types of simulation models and other development tools.
- Such improved solutions would also ideally be easy to use, flexible in their level of complexity and abstraction, and broadly adaptable to a number of different modeling languages.
- a computerized processor design tool adapted to permit the addition of user-configured extensions useful across multiple heterogeneous target architectures.
- the extensions comprise abstracted language (e.g., XML) representations which each reference at least one native target architecture template.
- a computerized processor design tool adapted to permit the addition of a user-configured extension using variable levels of design abstraction is disclosed.
- three levels of abstraction are provided: (i) a high level of abstraction, wherein hardware associated with the extension is automatically implemented based on UI inputs from the user; (ii) an intermediate level of abstraction, wherein at least a first portion of the extension is implemented according to a UI definition, and a simplified extension interface is provided to the user to allow custom functionality to be created thereby; and (iii) a low level of abstraction, wherein all internal signals associated with the extension are provided to the user via a user interface (UI), the UI allowing a complex customized extension to be created by the user.
- UI user interface
- a computerized tool for extending integrated circuit designs generally comprising at least one abstracted and user-configured extension component definition rendered in a markup language, the component definition referencing at east one structure rendered in a native language.
- the markup language comprises extensible markup language (XML)
- the structure comprises a template rendered in hardware description language or a behavioral language.
- a method of generating an extension component for use with a computerized processor design generally comprising: selecting at least one extension type from a plurality of types, the extension type comprising an extension definition rendered in a first language; obtaining logic from a user regarding the desired functionality of the extension; referencing at least one extension template rendered in a second language; and generating the extension component based at least in part on the extension definition, user logic, and the extension template.
- the extension component is stored within a database rendered substantially in XML.
- an improved extension component useful with a computerized design of a digital processor comprising; at least one extension template adapted to generate control logic for at least one extension type; at least one extension test template adapted to permit testing of said extension component; and user provided extension logic describing at least a portion of the functionality of said extension component.
- the extension component further comprises user provided extension test code and component integration files
- the control logic comprises control logic for instances of (i) extension ALUs, (ii) condition codes, and (iii) extension registers.
- an improved method of generating an extension component for use with a computerized processor design generally comprising: selecting at least one extension type for use with the extension component; selecting a plurality of configuration options associated with the at least one extension type; generating at least one template based at least in part on the acts of selecting; generating a custom interface based at least in part on the at least one template; obtaining logic via the custom interface; and combining the logic and template(s) to produce the extension component.
- an improved computerized tool for extending integrated circuit designs comprising at least one abstracted and configurable extension component definition rendered in a universal language, the component definition being adapted to reference at least individually a plurality of structures each rendered in a different native language.
- at least one of the structures is associated with a target architecture which does not yet exist; hence, the tool is advantageously made "forward compatible" with literally any new target architecture which may be developed in the future, so long as a template (interface) is available for that architecture.
- a method of doing business comprising: providing a design environment, and extension tool compatible with the design environment, to at least one customer; and providing processor instructions to the at least one customers in a predetermined format adapted for use with the extension tool and design environment.
- the format comprises predetermined or reserved opcodes.
- an improved computerized tool adapted to efficiently extend integrated circuit designs is disclosed, the tool generally comprising at least one abstracted and configurable extension component definition rendered in a universal language, the component definition being adapted to generate support files.
- the support files consist of one or more of (i) test hardware support files; test software support files; and (iii) assembler/compiler support files. Automated provision of such files advantageously reduces the extension (and processor design) generation and test cycle.
- an improved computerized system for generating a processor design comprising: a computerized parent design environment; an extension tool adapted to operate with the environment, the tool adapted to generate an extension component by: (i) selecting at least one extension type for use with the extension component; (ii) selecting a plurality of configuration options associated with the extension type(s); (iii) generating at least one template based at least in part on the aforementioned selection; (iv) generating a user interface based at least in part on the template(s); (v) obtaining logic via the user interface; and (vi) combining the logic and template(s) to produce the extension component.
- the design environment comprises an object-oriented environment adapted to run on a computer, and the available extension types comprise at least one of an ALU, condition code, auxiliary register, or core register.
- the extension component and template(s) are rendered in a markup language; a markup language database adapted to store them is also provided as part of the system.
- Fig. 1 is a logical flow diagram of the generalized methodology of extending a design according to the present invention.
- Fig. 2 is a graphical representation of an exemplary embodiment of the method used to abstract model interfaces associated with the design.
- Fig. 2a is a graphical representation of an exemplary GUI generated from an extension definition which allows multiple instances of the extension.
- Fig. 3 is a graphical flow diagram illustrating an exemplary design tool (i.e.,
- Fig. 4 is a graphical representation of a user interface (GUI) generated by the design tool of Fig. 3.
- Fig. 5 is a graphical representation of an exemplary context-sensitive editor GUI according to the invention, showing an example custom extension implementation in VHDL.
- Fig. 6 is a graphical representation of an exemplary design environment GUI showing a sample extension component being added to a circuit design.
- Fig. 7 is a graphical representation of a design environment GUI that combines the extension component data into the system displays.
- Fig. 8 is a graphical representation of one embodiment of an extension component disposed within a design environment (e.g., ARChitect) IP library according to the present invention.
- a design environment e.g., ARChitect
- Fig. 9 is a logical block diagram illustrating an exemplary interface between an extension ALU template and the ALU extension logic provided by users (including the signal set provided to the processor core).
- Fig. 10 is a logical block diagram illustrating an exemplary hardware interface between the extension condition code (cc) template and users.
- Fig. 11 is a logical block diagram illustrating an exemplary extension core register interface according to the invention.
- Fig. 12 is a schematic diagram illustrating exemplary template logic for the extension core register.
- Fig. 13 is a logical block diagram illustrating an exemplary interface of the auxiliary register extension template.
- Fig. 14 is a schematic diagram illustrating exemplary template logic for the extension auxiliary register.
- IP generally refers to intellectual property which includes, without limitation, IC designs, methods, processes, schematics, code, hardware description language models, configurations ("builds"), scripts, logic level representations, and software objects and components (and their descriptions), which may be used or generated by an individual or system.
- IP library generally refers to a repository for the definitions of IP components. Such repository may be of literally any form which is accessible to one or more users.
- extension and “extension component” generally refer to one or more logical functions and/or components which can be selectively configured and/or added to an IC design.
- extensions may comprise an extension instruction (whether predetermined according to a template, or custom generated/configured by the designer) such as rotate, arithmetic and logical shifts within a barrel shifter, MAC functions, swap functions (for swapping upper and lower bytes, such as for Endianess), timer interrupt, sleep, FFT, CMUL, CMAC, XMAC, IPSec, Viterbi butterfly, and the like. Extensions may also include features or components such as multiplier/arithmetic units, functional units, memory, scoreboards, and any number of other features over which a designer may desire to exert design control.
- extension tool generally refers to a software tool or module that enables the automated generation and/or configuration of extensions.
- DL description language
- HDL hardware description language
- VHSIC HDL VHSIC HDL
- ISS any other programming language-based representation of the design, as appropriate.
- an exemplary Synopsys ® synthesis engine such as the Design Compiler may be used to synthesize the various embodiments set forth herein, or alternatively other synthesis engines such as Buildgates ® available from Cadence Design Systems, Inc., may be used. IEEE Std.
- processors are meant to include any integrated circuit or other electronic device (or collection of devices) capable of performing an operation on at least one instruction word including, without limitation, reduced instruction set core (RISC) processors such as for example the ARC Ax and ARClite family of user- configurable cores provided by the Assignee hereof, central processing units (CPUs), ASICs, and digital signal processors (DSPs).
- RISC reduced instruction set core
- markup language refers to any member of the markup language family, including without limitation XML, XSL, SGML, HTML, VoXML, MathML, SMIL, SVG, VML, XHTML, and the many variants thereof.
- XML refers to Extensible Markup Language, a markup language for documents containing structured information and developed by the World Wide Web Consortium (W3C), including XML 1.0, XML 1.0 (Second Edition), and XML 1.1.
- stage refers to various successive stages within a pipelined processor; i.e., stage 1 refers to the first pipeline stage, stage 2 to the second pipeline stage, and so forth. Such stages may comprise, for example, instruction fetch, decode, execution, and writeback stages.
- user logic refers generally to any description language and/or other components (e.g., test code) that are supplied by the user as additions into a standard component structure or template.
- user interface refers to any mechanism by which one or more users or other information sources may communicate information between themselves and the extension tool.
- Such interfaces may include, for example, a graphical user interface (GUI), an auditory interface (AUI), a tactile interface (such as for example a display adapted for capacitive or other "touch” activation), an optical (retinal) interface, and the like, all of which are well known to those of ordinary skill in the relevant art.
- GUI graphical user interface
- AUI auditory interface
- tactile interface such as for example a display adapted for capacitive or other "touch” activation
- an optical (retinal) interface and the like, all of which are well known to those of ordinary skill in the relevant art.
- Such interfaces may also include automated or computerized interfaces to information or data sources such as databases, algorithms, and networked devices, each of the latter adapted to receive requests for information from the extension tool, and provide the requested data thereto.
- the present invention provides, inter alia, a method and apparatus particularly adapted for creating, developing, and implementing extension components for hardware IP designs to produce structures or other output such as a standard IP library component.
- the invention makes it very simple for designers or end users to implement a new extension, while simultaneously supporting a comparatively high level of extension complexity if desired.
- the invention comprises a software entity or module
- extension tool which automatically generates the standard extension code used to produce various extension types (e.g., ALU extensions, core register extensions, auxiliary register extensions, and condition code extensions), so that the user need only supply the logic that is specific to their particular implementation.
- the extensions of the present invention also each support a number of varying configurations. The user selects a number of configuration options for the extension type that is required. The selected configuration is used to create a number of instruction templates which implement the basic extension functionality. Custom logic is then added to the extension according to an interface that is defined by the templates (and presented in the extension tool). The templates and the custom logic are then combined to make a new extension component.
- templates may be provided for a variety of different languages and tools including e.g., VHDL®, Verilog®, CAS, ISS (including providing test code and assembler support), so as to make the implementation both as flexible and complete as possible.
- VHDL® Verilog®
- Verilog® Verilog®
- CAS CAS
- ISS including providing test code and assembler support
- the "customized" behavioral and structural languages of the prior art previously described herein e.g., LISA, nML, EXPRESSION, MIMOLA, TIE, and the like
- TIE extra compile phase
- the invention simplifies the creation of custom IP extensions by abstracting the complex interface(s) associated therewith, thereby allowing for much simplified interfaces.
- the hardware IP required between the abstracted layers is then automatically generated according to the pre-defined templates or other data structures that are controlled by the designer.
- the use of different levels of abstraction advantageously allows different levels of complexity to be exposed to the user.
- the hardware is implemented completely automatically from a user interface (e.g., GUI) definition.
- GUI user interface
- some of the design is implemented according to the UI definition, and a simplified interface is exposed to the user to allow the designer/user to create customized IP.
- all (or substantially all) internal signals are exposed to allow any complex extension to be created by the user.
- the GUI controls the amount of exposed logic, allowing multiple levels of abstraction to be exposed between these fundamental levels.
- an extension component generated with the invention is not restricted to any particular target architecture.
- any target architecture can be used as long as the interface templates/structures are provided.
- extension components are defined in a markup language (e.g., XML), which references the templates or other structures that are rendered in their native language. Therefore, new extension component templates/structures and source files can be added without the need for modifying the tools that reference them.
- the extension components are therefore substantially "universal" in nature. This feature makes it quite easy to add new extension components, as well as to extend the functionality of existing extension components.
- a further advantage of the technique of abstracting the custom interfaces into separate templates as previously described is that if the target architecture changes, only the abstracted extension templates need to be modified to take the change into account, rather than the more substantial modification required under the prior art.
- the extension components available in the markup language database of the present invention do not need to be modified. Additionally, the target architecture does not even need to exist when the custom extension(s) is/are created.
- the abstracted templates can be implemented for the new target architecture, so that all existing extension components will be compatible with the new architecture.
- the extension technique afforded by the present invention is in effect "forward compatible" with all future target architectures so long as templates for that architecture can be provided.
- the abstracted extension component templates may also be stored independent of the extension component; hence, only the absti-acted templates need to be changed to integrate the custom extension with different target architectures.
- the abstracted templates and custom components are in the same format, they can also be incorporated together ("bundled") into a single component implementation.
- This approach makes the extension specific to a particular target architecture, yet advantageously allows for modification of the lower level template implementations to permit more complex and highly optimized designs to be created.
- data common between language implementations is abstracted into a markup language database, thereby allowing language-specific template interfaces to be used for each supported language. This feature optimizes the implementation of the invention in existing design environments, and also readily integrates new modeling languages by allowing for the creation of new interface templates.
- the exemplary extension tool module of the present invention allows instructions to be delivered to end users or customers in a format using designated or reserved opcodes if desired. Specifically, in the exemplary embodiment, since there are a limited number of extension opcode locations available, some opcodes have been defined that are available to the user, and some are reserved for other purposes (e.g., future expansion, etc.).
- the exemplary extension tool disclosed herein allows the user to choose their own opcode from the 'user allocated' opcodes via a UI which then automatically proliferates throughout the extension implementation, making it very easy to change the opcode.
- Manufacturer or reserved designed extensions use the reserved allocated opcode values, so that they never clash with user opcodes.
- the mechanisms used in the invention to generate the simulation models are capable of generating (whether automatically, semi-automatically, or manually under user control) any form of support file, such as test hardware and software, and assembler/compiler support files.
- Fig. 1 the basic methodology of the extension generation process according to the present invention is described. It will be appreciated that the process 100 of Fig. 1 is a generalized representation of the more complicated process described in greater detail subsequently herein. As shown in Fig.1, the extension process 100 fundamentally comprises three different stages or steps, namely (i) extension type definition and selection 102; (ii) logic capture 104; and (iii) extension generation 106.
- extension type generally refers to information that determines the configuration of an extension. Examples of extension types include arithmetic logic unit (ALU), Condition Code, Core Register, and Auxiliary Register extension types, although others may readily be specified. Extension types according to the present invention are effectively configurable templates, and are IP “components” like any other configuration template. Table 1 shows an exemplary extension type definition according to the invention. Table 1
- Each of the extension types of Table 1 can be instantiated multiple times.
- an extension can contain multiple instructions (of the same or different type), with multiple condition codes and registers.
- Extension types are defined as individual IP components. This way each type can have, inter alia, its own set of options and its own set of file lists and variables.
- the extension types can also be added into a parent component. Obtaining the information required for each extension type per step 102 is accomplished by informing the extension tool which templates are required to be to pulled into the component; a "skeletal" extension is then created, to which the user can then add their own custom logic to complete the extension (step 104 described below).
- the logic capture step 104 is fundamental to the extension component addition process. It determines how the extension types, defined in the step 102, are actually utilized.
- a GUI editor (see Fig. 5) is used in the logic capture process.
- the GUI editor and supporting capture process are designed to (i) show the available input, output and internal signals to the user; (ii) allow the user to add internal declarations; e.g., libraries and packages; (iii) allow the user to add extra inputs/outputs to/from the new extension; (iv) capture the extension logic from the user; and (v) permit the addition of more levels of hierarchy.
- the extension component is generated (in the form of a typical IP component in an IP Library in the exemplary embodiment).
- the information stored in the component comprises the references to the templates in a common directory.
- This approach allows changes/bug fixes to the template to ripple through all future builds without requiring changes to the individual extensions.
- the components generated this way are processor independent, and can be used with any processors without any changes.
- the information stored in the component comprises the complete extension with all HDL added, and is not be dependent on any templates.
- This approach allows the user to modify all generated code, but in doing so breaks compatibility with the software extension tool (i.e., the extension could not be loaded back into the tool).
- This approach also makes the extension processor-specific.
- This approach also allows the creation of IP suitable for distribution to end users, and permits the extension tool to be used as a starting point to implement more complex instructions that are not supported by the tool itself. Additional details on IP component creation and storage are provided subsequently herein.
- the ARCtangent processor is a user-customizable 32-bit RISC core for ASIC, system-on-chip (SoC), and FPGA integration. It is synthesizable, configurable, and extendable, thus allowing developers to modify and extend the architecture to better suit specific applications.
- the processor comprises a 32-bit RISC architecture with a four-stage execution pipeline.
- the instruction set, register file, condition codes, caches, buses, and other architectural features are user-configurable and extendable. It has a 32 x 32-bit core register file, which can be doubled if required by the application.
- ARCompactTM comprises an instruction set architecture (ISA) that allows designers to mix 16 and 32-bit instructions on its 32-bit user-configurable processor.
- ISA instruction set architecture
- the main features of the ARCompact ISA include 32-bit instructions aimed at providing better code density, a set of 16-bit instructions for the most commonly used operations, and freeform mixing of 16- and 32-bit instructions without a mode switch - significant because it reduces the complexity of compiler usage compared to competing mode-switching architectures.
- the ARCompact instruction set expands the number of custom extension instructions that users can add to the base-case ARCtangentTM processor instruction set. With the ARCompact ISA, users can add literally hundreds of new instructions. Users can also add new core registers, auxiliary registers, and condition codes. The ARCompact ISA thus maintains and expands the user-customizable and extensible features of ARC's extensible processor technology.
- SoC system-on-chip
- the ARCompact ISA delivers high density code helping to significantly reduce the memory required for the embedded application.
- the processor potentially has to make fewer memory accesses. This can cut power consumption and extend battery life for portable devices such as MP3 players, digital cameras and wireless handsets.
- the shorter instructions can improve system throughput by executing in a single clock cycle some operations previously requiring two or more instructions. This can boost application performance without having to run the processor at higher clock frequencies.
- the exemplary embodiment of the present invention supports a variety of different extension instruction configurations, including (i) 16-bit single/dual operands; (ii) 16-bit single/multiple cycles; (iii) 32-bit single/dual operands; and (iv) 32-bit single/multiple cycles. Both pipelined and stalled multi-cycle instructions are supported.
- Register scoreboarding is also provided for multi-cycle extension instructions
- the exemplary embodiment of the extension tool include (i) GUIs for authoring and configuration; (ii) editing/cloning/cutting and pasting IP within the tool; (iii) "correct by construction" rule checking functionality built into the extension at the authoring stage; (iv) automated generation of documentation (built during the authoring stage, configured then output at build time); (v) automated integration of additional components required by the module (e.g., interrupts, registers, scoreboarding, etc.) with conflict checking; (vi) automated test bench/code integrationl; (vii) synthesis control for each HDL module; (viii) automated conflict checking between user-generated extensions and existing extensions; (ix) automated generation of HDL from the created extensions and HDL syntax checking; and (x) inclusion of the generated extensions within the programmer's model of the customized processor design.
- IP source templates how to model the solution within the existing IP model, including modeling at the description language level (i.e., signals and interface from the user description language to the core description language);
- IP destination component how to build an extension description into an IP Component in the library;
- UI - integration of the features and functionality of the invention into the existing user interface e.g., GUI.
- the software tool described herein is advantageously a "drop-in" module to the ARChitect design environment.
- Model Interface Abstraction Fig. 2 is a graphical depiction of the method used to abstract the model interfaces according to the invention. It will be appreciated that while the following discussion is cast in terms of three (3) levels of abstraction, more or less levels having varying features and information may be implemented consistent with the invention.
- the template interface structures 202 of Fig. 2 contain logic designed to simplify or abstract the interface that is presented to the extension designer. The abstracted interface is then exposed to the custom logic layer 204, where a user extension can be created.
- the template interface structures 202 contain logic for specific types of extension, such as multi-cycle instructions or core registers for extending processor cores.
- the template interface structures are also designed so that they can be readily duplicated.
- the template interface structures contain parameterized values, the definition of which is stored in XML.
- the tool creates a GUI from the definition (see Fig. 2a), which automatically allows multiple instances of the extension.
- the user then has control over the parameters for each instance.
- the custom parameters for each instance are stored within the library component from each extension; when the extension is used in a design, the design environment software checks certain pre-defined parameters to make sure they are valid and do not clash.
- the parameters checked by the design environment in the exemplary embodiment include memory maps, auxiliary register maps, and opcode maps. If there is a clash, the user can return to the GUI definition and change the parameter to remove the clash.
- Opcode/Register values are, in the illustrated embodiment, initially created as a default derived from the XML; the user may then modify them if they wish.
- the custom logic is supported on any target architecture by providing different interface abstraction templates 206.
- the model interface abstraction architecture of Fig. 2 is, in the exemplary embodiment, rendered within the previously described object-oriented design environment in the form of a software tool or module.
- Fig. 3 illustrates one exemplary configuration of this tool 300.
- the interface abstraction templates 206 of Fig. 2 are stored in a markup language (e.g., XML) database 308, along with data specific to each interface structure. This extra data defines the behavior of the interface, and allows configurable parameters to be defined by the user.
- a markup language e.g., XML
- a second software tool (not shown) is optionally used to interpret the template data and create a graphical user interface (GUI); this GUI allows a user to specify the template parameters 310 so that a custom interface can be created.
- Fig. 4 shows one embodiment of a GUI generated by data stored within extension templates of the database 308.
- one advantage of the technique of abstracting the custom interfaces into separate templates as described herein is that if the target architecture changes, only the abstracted extension templates need to be modified to take the change into account; the extension components available in the (XML) database need not be modified. Also, the XML definitions of the abstracted components references the templates in their native language; therefore new extension component templates and source files can be added without the need for modifying the tools that reference them.
- extension component types may be configured including, without limitation, third party IP extensions, those illustrated being merely exemplary.
- the customizable parameters 416 shown in Fig. 4 are generated directly from the XML definitions, although other methods of defining these parameters may be used.
- the architecture of the present embodiment advantageously allows the available templates to be incorporated or aggregated together at the same time to create a single custom extension component, as seen in Fig. 4. Therefore, the interfaces for each template can be integrated together as well.
- the output of one extension component type can be used as an input to another, as seen in Fig. 2.
- the aforementioned software tool allows custom logic to be entered by providing a context sensitive editor to the user. Fig.
- FIG. 5 shows an exemplary GUI of one embodiment of the context sensitive editor 502.
- the editor 502 shows the custom logic 504, exposes the simplified interface, and allows access to all available target system interface signals for more complex extensions (shown by the dashed lines 240 in Fig. 2).
- a "tooltip" graphical element 510 of the type well known in the GUI arts is also optionally provided, the tootip providing the interface definitions accessed from (XML) database 308. It will be appreciated that since the definition of the extension component is available in a substantially universal (here, XML) database, any tools can access the parameters associated with each component.
- the custom logic entered via the editor 502 is then stored in a User Extension XML Database 314 (Fig. 3).
- the component can be automatically integrated into a system design. Because the extension component definitions reside in the XML database 308, literally any tool may access the parameters associated with each extension component. For example, the tooltip 510 in Fig. 5 previously described is generated using data from the XML database in this fashion. The parameters in the XML database 308 remain customizable, even after the custom extension component has been implemented. In one embodiment, the system creates a GUI that allows these customizable parameters to be modified when the component is used in a design. In the illustrated embodiment, the User Extension XML Database 314 also contains the appropriate source code for the extension, as well as additional data that defines how the component will integrate with another design.
- the software tool of the invention can combine these extension component data with the system data when the component is added to a design, thereby allowing the tool to (i) generate custom documentation for the design, and (ii) create GUI displays representing the entire system design (or selected portions thereof).
- Fig. 6 is a graphical representation of one embodiment of a display 600 used to provide this functionality.
- the extension component 616 is added to a circuit design, and any components 614 available in the User Extension XML Database 314 may be added to the design as well.
- Fig. 7 is a graphical representation of one embodiment of a display GUI 700 combining the extension component data into the system displays.
- the aforementioned software tool uses the data in the User Extension XML database 314 (Fig.
- extension component 616 with the standard extension templates 306, which is then integrated into the system design.
- the extension component parameters such as register and memory maps, are also made available to perform DRC/dependency checks when the component is added to the system. For example, in one embodiment of this invention, the data is used to check for memory and register map conflicts with existing components in the system design. These checks are performed according to well known algorithms, and accordingly not described further herein. Appendix A hereto provides exemplary code used in implementing this functionality. Referring now to Fig. 8, one exemplary configuration of an extension component according to the invention is described. This component would be disposed, for example, within the IP library of the previously described design environment.
- the extension component 802 contains an extension parent 804, which may have as children one or more extension ALU instances 806, condition code units (not shown), core register instances 808, and auxiliary register instances 810.
- the exemplary extension component 802 of Fig. 8 comprises (i) extension templates, (ii) extension test templates, (iii) user provided ALU extension logic (e.g., %%ExtensionName%%.v(hdl)), (iv) user provided extension test code (e.g., %%ExtensionName%%.s), (v) user provided parameters through a GUI or other user interface (e.g., uxdefs.v(l ⁇ dl)), and (vi) integration files.
- Extension Component Templates comprise 1) extension templates and 2) extension test templates. Extension templates - Extension templates generate the control logic for extension ALUs 806 and condition codes, and the complete implementation of extension registers. These templates also provide a bridge to connect the extensions to the processor core.
- Extension templates comprise, inter alia, a) an ALU extension template (e.g., xalu.v idl ), b) condition code extension template (xcondcode.v(hdl)), c) core register extension template (xcorereg.v ⁇ hdl)), d) auxiliary register extension template (xauxreg.v(l ⁇ dl)), e) extension placeholder template (extension.v(hdl)), f) extension constants placeholder template ( xdefs.v(hdl)), g) extension wrapper template (extension wrapper.v(hdlf), and h) extension wrapper placeholder template (user extensions. (hdlj).
- ALU extension template e.g., xalu.v idl
- condition code extension template e.g., xcondcode.v(hdl)
- c) core register extension template xcorereg.v ⁇ hdl)
- auxiliary register extension template xauxreg.
- ALU, condition codes, and registers templates can be used multiple times within a single extension to form an extension component with multiple extension instructions, condition codes, and registers, thereby providing significant design flexibility.
- the exemplary ALU template contains the implementation of necessary control logic to provide extension execution result (ALU result and extension or updated flags) to the processor at the end of execution stage of the pipeline. This template is used to generate control logic for the following three basic types of extension instructions: (1) dual operand; (2) single operand; and (3) zero operand.
- extension instructions For each of these three types of extension instructions, the following options are provided: (a) instruction name; (b) instruction opcode; (c) number of cycles; (d) multi-cycle execution mode: pipelined or stalled result write-back; (e) allowing flag setting (or the use of ".F") with the extension in assembler code; (f) result write back (not applying for zero operand instructions); and (g) result write back with stall (multi-cycle dual or single operand instructions only).
- the control logic generated in the exemplary ALU template includes instruction decode logic, result selection logic, result write back control logic, writeback stall logic, and register scoreboarding logic. Fig.
- FIG. 9 illustrates an exemplary interface between this ALU template 902 and the ALU extension logic 904 provided by users, as well as the signal set 906 provided to the processor core.
- the string "ExtName” occurring in all ALU template/user logic signal names in Fig. 9 represents a replacement variable "%%instruction_name%%", which is replaced at extension component/core build time by the real extension name assigned by the user.
- the signals 910 appearing in the interface between ALU template 902 and user logic 904 are generated internally and used by the template itself. They are made conditionally available to, or required from, the user depending on the type of extension and options selected. The availability and description of these signals are described in Table 2 below. Table 2
- the ALU template 902 declares two signals, iJExtName_res and i_ ExtNameJlag, and requires the user logic 904 to provide extension ALU result and/or flag result on these two signals. All other signals are declared conditionally within the template and made available to the user if they are present. The user logic 904 should avoid declaring any signals appearing in this interface.
- Instruction decode logic generates the extension instruction decode for use in the ALU template 902, extension wrapper template (e.g., extension _wrapper.v(l ⁇ dl)), and the processor core.
- stage 2 and stage 3 decode signals i.e., i_p2dec_ExtName and ij)3dec_ExtName.
- Three sets of these signals are generated for dual, single, or zero operand instructions, respectively.
- Each of these signals has multiple implementations, and a set of replacement variables are used to select the implementation of a specific signal. All implementations that are not selected are not merged into the placeholder at extension component build time. This control scheme is described in Table 3. Table 3
- the illustrated embodiment provides a special stage 3 decode signal for multi-cycle instructions with stall, since the decode of this type of instruction cannot be qualified with the stage 3 enable signal (en3), otherwise it will hold the pipeline indefinitely.
- the extension instruction decoding logic also provides stage 2 instruction decode information for the core, as described in Table 4. Table 4
- a replacement variable turns on the logic that drives the desired output signal if the extension matches the type and option described in the last column.
- the result selection logic of the illustrated embodiment adds the user-provided extension results (ALU and/or flags) onto a multiplexer (MUX) created in the extension placeholder template (extensions (ltd!). Again, it generates two possible entries to the MUX, and four replacement variables are used to select the logic producing desired results. This is shown in Table 5 below. Table 5
- a replacement variable turns on the logic that drives the desired output signal if the extension matches the type and option described in the last column.
- the exemplary result writeback process consists of (i) ALU result writeback, and
- (ii) flag update For single cycle extension instructions, signal ux_snglec_wben is set when the instruction enters into stage 3 of the pipeline. However, for multi-cycle extension instructions, the ALU result writeback control is more complicated, and the writeback is controlled by a set of three signals, i.e., (1) ux_multic_wben indicating when the result is ready, (2) ux_multic_wba providing the writeback address, and (3) uxjnulticjjusy indicating whether the extension instruction has finished. For all single operand instructions that will write the ALU result back to a register, the control signal ux_p2b ⁇ eld_wb_a should be set when the instruction enters into stage 2.
- uxpHdest and uxnwb should be set when the extension enters into stage 2 or stage 3, respectively.
- tese signals have all been implemented in the ALU template 902, and the desired implementation logic is selected by replacement variables as shown in Table 6. Table 6
- the write-back address for a multi-cycle extension instruction is latched from the stage 2 address bus (e.g., dest), and a state machine is implemented to provide the result write-back enable and instruction busy information.
- stage 2 address bus e.g., dest
- a state machine is implemented to provide the result write-back enable and instruction busy information.
- Extension flag update is controlled by the signal uxsetflags for multi-cycle extensions, and by ux lgen for single cycle extensions.
- the stage 3 signal p3setflags is latched until the multi-cycle write-back enable becomes valid, and uxsetflags is set by this signal at write-back, which then forces the core to update the flags from extension flags.
- Table 8 describes the flag update control of the illustrated embodiment. Table 8
- the ALU template 902 generates pipeline stage 2 stall logic for register scoreboarding, and stage 3 stall logic for multi-cycle extensions writing back result by stalling the pipeline.
- the stage 2 scoreboarding logic sets the stage 2 stall signal ⁇ xholdupl2 when the instruction in stage 2 accesses the destination register of an unfinished multi-cycle extension instruction.
- the stage 3 stall logic sets uxholdupl23 when a multi-cycle extension instruction with stalled write-back reaches pipeline stage 3. Table 9 illustrates this functionality. Table 9
- Condition code template - xcondcode.v(hdl) - An exemplary hardware interface between the condition code (cc) template and users is shown in Fig. 10.
- the cc template 1002 uses user supplied condition code suffix and values 1004 to perform the condition code decode, and passes the user-provided condition true signal i_%%suf ⁇ x%%_cc to the core through uxp2ccmatch (stage 2) and uxp3ccmatch (stage 3).
- the condition true signal i_%%suff ⁇ x%%_cc is declared within the template 1002 and should be assigned within the user logic 1004. In the exemplary embodiment, this signal comprises a T or l'bl if the desired condition is met.
- Core register template- xcorereg.v(hdl) - This template supports three types of core register extension: (1) read only; (2) write only; and (3) read/write.
- the read only type of core registers are not made available for users.
- This type of registers are used for storing ALU results without using the normal write-back path.
- To support this type of core registers one-to-one mappings between ALU results and core registers need to be implemented in UI wizard when an extension contains multiple ALUs and multiple core registers.
- the core register template always implements write-through logic and puts any extension registers onto shortcut path. This template further implements automatically the register scoreboarding if a core register is used by a multi-cycle instruction.
- the options provided by this template include: (i) register name; (ii) register address; (iii) working mode: write-only or read/write.
- An exemplary user interface of the core register extension template is shown in Fig. 11. As shown therein, no user logic is needed to extend a core register.
- the description of the interface signals declared within the template to the user is given in Table 10 below. However, it will be noted that some signals are conditionally available to users based on the options selected. Table 10
- Table 11 Auxiliary register template - xauxreg.v(hdl) -
- the exemplary embodiment of the auxiliary register template according to the invention supports only write-only or read/write single-access auxiliary register extension.
- the template is configured to provide scoreboarding if it is used along with a multi-cycle instruction; this prevents accessing the extension auxiliary register when the multi-cycle instruction has not finished.
- the following options are available from this template: (i) register name; (ii) register address; and (iii)working mode: write-only or read/write.
- An exemplary interface of auxiliary register extension template is shown in Fig. 13. As shown in Fig. 13, no user logic is needed to extend an auxiliary register.
- the description of the interface signals declared within the template is given in Table 12. However, some signals are conditionally available to users based on the options selected.
- Extension placeholder template - extension.v(hdl) -
- the extension placeholder template is copied to the directory pointed to by the user library (e.g., build_dir ⁇ vhdl) at build time, and renamed to the extension name.
- a minimal extension interface to the core is defined according to 'the types and selected options of the instructions, condition codes, and registers within this extension.
- the interface consists of the interfaces for the ALU extension, condition code extension, auxiliary register extension, and core register extension respectively. Every signal appearing in the interface is selected by a replacement variable, and some signals in the interface are shared by different types of extensions. Tables 14-17 describe these interfaces for the ALU extension, condition code extension, auxiliary register extension, and core register extension, respectively. Table 14
- extension placeholder template illustrated herein can be used for an extension instruction, an extension condition code, an extension core or auxiliary register, or any combination of these types of extension.
- the template is also advantageously configured to accommodate multiple instructions, condition codes, and registers (aux or core) within a single extension. All instructions, condition codes, registers contained within an extension are merged into this template at build time.
- Extension constants placeholder template uxdefs.vflidl— This template is provided to hold any constants of which the software tool is aware to avoid "magic" numbers (i.e., instruction opcodes, register addresses, condition code numbers, and any user-defined constants) in generated HDL or similar output files.
- the constants placeholder template comprises an empty template with replacement variables defined as set forth in Table 18. Table 18
- Extension wrapper template - extension _wrapper.v(hdl) -
- the extension wrapper template defines the declaration and instantiation of an extension (either a single instruction or multi-instruction extension) in the extension wrapper placeholder template or user extensions. vQidl). Any internal signals required to instantiate the extension are generated; however, these internal signals are not available to users as they are disposed in a higher level within the hierarchy.
- the extension wrapper template also adds any output signals from the extension onto the multiplexers provided by the placeholder template user extensions. v(l ⁇ dl) .
- the replacement variables used in the wrapper template are identical to those used in the extension placeholder template.
- Extension wrapper placeholder - userextensions.v dl) - This template is the top level of all user created extensions, and connects these extensions to the core. A multiplexer is generated in this template to route each extension output to the core. If more than one multi-cycle extension instructions are integrated into core within a given build, a result write-back priority arbiter is created for these instructions to resolve the write-back contention (at the same cycle).
- the full extension interface using the tool of the present invention is described by the exemplary VHDL port list shown in Appendix B.
- Extension test templates - Extension test templates provide a mechanism for the extensions to be tested through the prevailing test environment (e.g., ARCtest in the illustrated embodiment). These test templates generate extension test code wrapper and compiler directives for the extensions. These templates include the extensions test placeholder; and extension cross-reference template.
- Extension test placeholder template - xtest.s - This template provides a wrapper for user test code which is merged into the place defined by the pragma EXTENSION_TEST_CODE in this wrapper, and it embeds the following replacement variables: (a) ExtensionName: the test file name; and (b) compilerDirectives: declare all extensions under test.
- the template also includes the following files before the actual test code starts: (1) macros.s; (2) code.s; (3) vectors. s; and (4) int Jests .
- the extension test placeholder wrapper also provides following labels: _start (defined by directive .global) xtest_start % %ExtensionName % %_start end yrog ins err handle
- _start defined by directive .global
- xtest_start % %ExtensionName % %_start end yrog ins err handle
- the template initializes the designated test register(s) (e.g., r25 in the illustrated embodiment) at label xtest_start, and reports the test result at label end_prog for success, and ins_err_handle for failure. Users may use the branch address of ins_err_handle to terminate the test when an error is detected for the extension under test.
- Extension Component Integration Integration of an extension component as previously described into the target core is done automatically within the exemplary software design environment (e.g., ARChitect2) by use of replacement variables and filelist files that define copying and merging of files into the build directory.
- a set of integration files (Table C-l in Appendix C) are required to be present in the specified directory, where $template_path points to IPLibrary ⁇ com ⁇ arc ⁇ templates ⁇ eia, $eiaLink_path points to IPLibrary ⁇ com ⁇ arc ⁇ links ⁇ eia, and $hdl_child refers to, e.g., vhdl_child or verilog_child depending on the description language set for the core build.
- the extension integration files of the illustrated embodiment comprise: (i) file list files; (ii) variable files; (iii) hierarchy files; (iv) extension integration template (e.g., Lib.list); (v) a test integration template (e.g., test.xref for ARCtest); and (vi) ARChitect2 support data (e.g., register map, condition codes, etc.).
- Extension Component Test and Test Program Integration Compiler directives for any instructions, condition codes, auxiliary registers, and core registers within a single extension are generated by the replacement variable compilerDirectives in the files listed in Table 19 (where Stemplatejpath points to a directory; e.g., IPLibra ⁇ com ⁇ arc ⁇ templates ⁇ eia.): Table 19
- Table 20 To integrate the test code associated with the extensions of the present invention into a test (e.g. ARCtest) environment, the exemplary files of Table 20 are utilized: Table 20
- the extension tool of the present invention is also advantageously adapted to permit various other types of testing.
- the random instruction generator (RIG) test apparatus described in co-owned and co-pending U.S. Patent Application Serial No. 10/289,510 filed Nov. 5, 2002 and entitled “Random Instruction Generator Apparatus and Method", incorporated herein by reference in its entirety, is utilized in conjunction with the extension tool (and design environment).
- the RIG provides a facility for generating random sequences of assembler language instructions.
- RIG is not architecture-specific and is generally language “agnostic", in that it can be programmed using a variety of different languages.
- the exemplary embodiment is programmable using a form of extensible markup language (XML); the RIG advantageously specifies how to generate random sequences and encapsulates architecture- dependent aspects of the generated instructions.
- the RIG may be thought of generally as a probabilistic string generator with additional features to support the needs of instruction generation.
- the RIG XML of the exemplary embodiment is not considered a generalized computational (Turing) language, the programmer can generate expressions that the assembler computes, thereby accommodating a wide variety of computational needs.
- XML is a simple language that expresses a single tree. That tree is "executed" by RIG to generate the random sequences.
- the RIG is advantageously useful with respect to a variety of different hardware environments, including for example the Tangent A5 RISC processor core previously referenced. This flexibility is well suited to the highly flexible (and architecture "agnostic") extension tool of the present invention. It will be appreciated, however, that other types and configurations of test tools may be utilized consistent with the present invention as well.
- Verification of Extensions Extension methodology verification tables are defined within the exemplary configuration of the present invention to test the extensions created through the software tool. All extensions are assumed to contain at least one extension instruction. For extensions containing more than one extension instruction, minimal requirements for extension verification are defined. The test of extension registers is excluded from these verification tables. Exemplary tables are shown in Appendix D hereto. The illustrated embodiment is also configured to perform write-back "collision" testing for the designated extensions.
- the present invention can advantageously be extended to simulators (e.g., instruction set simulators (ISS) and cycle-accurate simulators (CAS)) and other tools by providing a custom dynamic link library (DLL) that is specific to the extension component.
- Simulation is vital for system-on-chip (SoC) design because it lets users (e.g., programmers) test and profile their code before the first silicon becomes available.
- Software-based tools such as CAS and ISS simulators are also a lower-cost alternative to hardware-based development systems, in that multiple users can work in parallel without competing for hardware resources.
- a standard "C" language interface is implemented that provides the required functionality.
- the ISS extension C code is constructed in much the same way that the HDL is built using the aforementioned ARChitect2 design environment. Specifically, certain declarations and functionality are provided by the ISS for an ALU extension, likewise for a register and condition code. This information is taken from the software tool extension configuration previously described, and is therefore automated in the exemplary embodiment. From the software extension tool, the following can be generated: (i) full C template (minus the custom logic); (ii) makefile(s) (e.g., SOLARIS, LINUX AND XP); and (iii) test code (to test the ISS implementation; the test code is common between all the exemplary implementations including ISS, CAS, VHDL, and Verilog).
- the custom logic, required for ALU operations, may be captured in a similar way to the HDL logic capture previously described, and therefore is provided by the user/designer.
- CAS a similar solution to that of the ISS described above is provided.
- the CASTM (Cycle Accurate Simulator) simulator produced by the Assignee hereof is adapted to provide an automated solution comparable to that of the ISS previously described.
- the CAS simulator provides a cycle- accurate testing environment for the user-customizable processor being designed, and advantageously can operate as a target of an associated debugging tool (e.g., MetaWare® SeeCode debugger).
- the CAS simulator is also made user-customizable.
- APIs Application programming interfaces
- the CAS simulator is provided as a dynamic link library (DLL) for the selected platform (e.g., Microsoft Windows XP®), or as an SO- format library for Sun® SolarisTM or comparable systems. Users can also advantageously set additional options (such as the cache configuration and extension components) at run time without rebuilding the simulator.
- DLL dynamic link library
- extension selection GUI is the same (see Fig. 4).
- the templates selected from this definition are specific to the target implementation, i.e. CAS or ISS instead of VHDL or Verilog.
- These templates abstract the ISS and CAS interfaces to the same interface that the VHDL and Verilog use.
- the same GUI interface is used to create and edit the custom extension as with the VHDL and Verilog, the only difference being the language for the particular target model.
- An advantage with CAS and the ISS is that they are both defined in C/C++, and because the interface to the underlying model is contained within the templates, the implementation of the extension for CAS and ISS is identical.
- the CAS implementation may contain extra timing information to maintain the cycle accuracy of the complete processor CAS model; when this is the case the timing information is ignored by ISS implementation.
- VHDL - i_simd_res s 1 val + (s2 val / 2)
- Verilog - i_simd_res s 1 val + (s2val / 2)
- CAS - i_simd_res s 1 val + (s2val / 2)
- ISS - i_simd_res slval + (s2val / 2)
- the CAS and ISS extensions are used to create a library component for the design environment (e.g., ARChitect) tool.
- the library component contains all the source code and support files (makefiles, testcode etc) for each extension component.
- the library may contain the following elements: (i) VHDL Model; (ii) Verilog Model; (iii) CAS Model; (iv) ISS Model; (v) Model Data (OpCodes etc); (vi) Test Code; and (vii) Makefiles (for CAS and ISS models).
- the design environment software can then be used to add the extension component into a design, and then to build the design in the selected target implementation (VHDL, Verilog, CAS or ISS).
- the software can build the processor design with the extension in any language for which the extension has been provided.
- the C models are compiled to create a DLL or SO (shared object) model dependent on the target platform. This model can then be dynamically linked into the CAS or ISS processor models as appropriate.
- the aforementioned design environment e.g., ARChitect
- the aforementioned design environment e.g., ARChitect
- the foregoing techniques may be readily applied to other types of simulators as well.
- the IP Component contains the automatically created extension IP based upon the parameters selected and the user's logic input.
- the structure of the component is made similar or identical to that of the host design environment (e.g., ARChitect); accordingly, the design software sees and presents the new extension component for use like any other component in the library. For example, a user may generate a Saturate-Add instruction extension.
- a Saturate-Add component Upon running the aforementioned wizard, a Saturate-Add component will be created within the IP Library.
- the component viewer component within the ARChitect software then shows the Saturate-Add as an extension instruction.
- the extension component created within the IP library multiple forms are contemplated.
- the extension references the extension component templates previously described.
- This form of extension can potentially be processor independent, since the templates can be specifically adapted to the target processor as discussed above.
- Each template comprises an individual IP component encapsulating the element it is templating - e.g. the ALU IP component will be the template for the ALU aspect of an extension.
- Each template will have a set of options that configure the IP - e.g.
- the ALU component may have an opcode value, an instruction mnemonic, number of cycles, etc.
- these templates are used in the way a normal IP Library component is used in a project. For example, if the user wishes to add a JTAG interface to a core, they would add it from the library to the project, and configure the options. Similarly, an ALU can be added into an extension component and then configured using the component options.
- the extension component software process uses this method when creating the extension for placement in the library. For every template component required, an instance of that component template can be created. Referring again to Fig. 8, an exemplary extension component structure for use in the
- the component 802 (“MyNewExtension”) is a component in the IP library, with the extension structure 804 ("El Parent Instance”).
- the extension component 802 contains references to 2 ALU instances 806, a core instance 808, and an auxiliary register instance 810, all contained within the extension structure 804. It is important to note that the component 802 (MyNewExtension) is an IP component definition in the IP Library, and that the structure (El Parent Instance) and its children, ALU 806, CoreReg 808, and AuxReg 810 components, are component instances disposed therein.
- an instance of the component is created as any other component, with the software tool's custom instance creation code being subsequently run, and the structure 804 copied into the component 802 thereby effectively creating the instance of the extension.
- an instance of the component can created in one of two ways. First, a method (e.g., "onCreate ( )") of the component instantiation object (e.g., "Componentlnst”) is called. This method call creates a default component instance based upon the library component. Alternatively, if there is a custom event handler defined as part of the library component, its "onCreate ( )" method is called.
- this event handler comprises computer code (e.g., Javascript) that is given complete control of the instance creation process, and is executed within the scope of the Componentlnst object.
- This latter method is preferentially used by extension tool of the present invention, since it allows for the performance of the special handling required for the copy operation described above with respect to Fig. 8.
- the user logic e.g., HDL and test code that are supplied by the user as additions to the standard template logic
- the user logic must be captured and stored as part of the extension component within the library in the same way as files exist in the links of other IP components; e.g. vhdl files will be in the vhdl_child link.
- each component e.g., ALU
- each component will add a single HDL file for each of the languages it targets, e.g. VHDL, Verilog, System C, etc.
- Each file is provided a corresponding filelist entry to permit merging it into the destination file.
- the illustrated embodiment optionally provides test code for each extension.
- One single file is created, and is also provided a corresponding file list operation to include it in the destination file set.
- the present invention further contemplates template control, matching or update mechanisms whereby the current version of a template is verified before core build.
- a template control mechanism comprises providing the version number of the extension as a part of the library component; verification that the version number is incremented (either automatically from every change, or semi-automatical ly under the control of the user) is performed accordingly.
- the version of the component used is also already stored within the project.
- the version in the project can be readily evaluated to determine if is up to date with the library (such as via the parent software of the design environment).
- Version numbers in the library and the project are both stored as XML in the exemplary embodiment, although it will be recognized that other languages or formats may be used.
- the extension authoring process builds a standalone IP component (as compared to the "reference" based embodiment previously described); in this approach, there is no dependency upon the templates, thereby advantageously allowing an instruction to be distributed without templates.
- the extension is structured and configured in the same manner as the aforementioned "minimal” solution, but rather than storing this structure in the library, a customized build of the extension is performed.
- the result of this process is that all template files are merged into the root extension file, which itself is included as an entry in the file list. Also, all data that is required to support the viewer modules associated with the design environment software; e.g. memory map, register map etc., is merged, and values fixed (based upon the option value specific to the template component). The resultant component is then placed in the IP Library. It will be recognized that as the various ties to the extension templates are broken (such as by the user modifying the code). The extension generally loses compatibility with the software extension tool described herein. This may reduce the flexibility of the tool under certain circumstances, or potentially produce other undesired results.
- one exemplary solution to this issue is to place commented banners or other demarcations around one or more protected areas of the relevant HDL; this ensures that the HDL can be safely regenerated without destroying any user code.
- Other approaches (for protecting the user code) recognized by those of ordinary skill may optionally be used as well.
- UI Management and Generation also provides for dynamic user interface (UI) management and generation.
- UI user interface
- a significant feature of the UI (e.g., GUI) associated with the parent software design environment is that the GUI is generated dynamically based upon the templates driving the extension process.
- the GUI does not require changes to any Java code to fix HDL issues, change displayed signals, and add options to the templates.
- the GUI is generated based upon the relevant extension templates to achieve a "capture" display.
- Fig. 4 shows an exemplary display 400 of this type. The four displayed tables (elements) of Fig.
- each element is taken from an IP component template within the IP Library.
- the "Instruction” element utilizes one or more templates from the IP library; e.g., the templates folder disposed therein. All extension templates reside under this folder.
- the ALU IP Component utilizes templates from the library.
- a table is created to allow the user to add instances of an ALU to their extension.
- the "Instruction" element has two ALU instances represented in the rows of data.
- the first ALU instruction (instance) is the MULU instruction, comprising a 32-bit dual operand pipelined multi cycle extension which writes back result when finished.
- the columnar data of the display 400 is derived from the template's standard set of options for the IP component.
- the ALU component in the above example, has the following options: (i) Mnemonic, (ii) Code Size, (iii) Operands, (iv) Exe Cycles, (iv) Writeback, and (vi) Multi-Cycle Behavior. Each instance of an ALU component must provide values to these options. In capturing the user logic, the signals available to the user to use within their extension are displayed.
- Fig. 5 shows one exemplary signal display configuration 500 provided by the design environment (ARChitect).
- each IP component template specifies a number of signals.
- a signal is a data type implemented as an item of tool data stored within the IP component to which it relates.
- the ALU template component will have a list of signals stored as XML code, the latter which will be read when populating the signal list for display in the GUI 500 along with the signals for any other used templates.
- a signal is considered as an item of data with properties as set forth in Table 21: Table 21
- a user is able to add from the list of available signals 502 into the signals within the local scope 504.
- This addition maps to a signal declaration within the extension file that implements bringing the signal into the scope of the extension.
- the above definition does not provide the functionality to allow the user to include signals in the local scope 504; it only allows the definition to specify those conditions in the "Is Shown As Local" field (data that is part of a signal definition of Table 21). Therefore, a list of all signals the user wishes to add must be maintained; if the signal of interest are included in this list, or the "Is Shown As Local" field returns a true value, the signal can be determined to be within the local scope.
- the signal instance list is, in the illustrated embodiment, stored within the IP component definition within the IP Library.
- Fig. 8 shows a component named MyNewExtension with two ALU instances 806; the signals list is stored within an XML or comparable language file at the MyNewExtension level.
- all or a portion of the relevant signal names associated with the extension tool are abstracted so that they're human readable to at least some extent, or otherwise provide information regarding the signal, and correlated to the non- readable (non-informational) names.
- This abstraction advantageously makes the change between target processor technologies simpler, as the same signal names can be used to utilized with their corresponding processor-specific signal names.
- This abstraction is also ideally documented (such as through use of a correlation table or other comparable mechanism).
- the extension interface can use a set of generalized signals which are processor independent.
- An extension is integrated into the processor core by component instantiation where a lookup table is used for a specific processor to connect the processor-specific input/output signals to generalized input/output signals used by the extension in order to reduce the complexity of any debugging operations which may utilize these signal names.
- design hierarchy is supported up to at least the first level within the extension software tool. Subsequent levels of hierarchy can be added manually using, e.g., the standard hierarchy support within the ARChitect design environment. However, it is further contemplated that support for the first hierarchy level may allow support of multiple ('n") hierarchy levels. Hence, the illustrated embodiment provides both a manual addition option (since the user may wish to add complex HDL external to the extension tool), as well as an automated option suited for "internal" applications. These options are now described in greater detail. To provide for the automated creation of a hierarchy, the same information must be captured as for an ALU (discussed previously herein). A name for the block and its position within the hierarchy must also be provided.
- Fig. 15 demonstrates exemplary signal propagation through the components within the scope of the extension tool.
- Fig. 15 is used as a reference to populate the signal fields within the exemplary displays (Fig. 5) described above.
- Fig. 15 contains two sections; the top section 1502 comprises the ALU level within the extension tool, while the bottom section 1504 adds the hierarchy.
- the arrows 1506 present in Fig. 15 indicate the source of the signal for the sake of the signal "hint" side of the extension tool.
- the signal hints need to propagate through the hierarchy; the arrows show this propagation and the signals that are available at any given point in the hierarchy.
- the signal display for the top section 1502 of Fig. 15 is quite simple, as it is determined by the signal's scripted values.
- the bottom (hierarchy) section 1504 relies upon the user selecting a signal to which to couple their signal(s).
- this relationship requires an added column in the local scope signal table 504 to identify the available signal(s) to which the local signal is coupled.
- the extension techniques described herein may be applied to the design environment is varying degrees.
- the present disclosure contemplates that only a select number or subset of all extensions which may be added to the core be added via the disclosed extension tool and associated methodologies.
- the extension tool and design environment may be configured such that any/all extensions are added via the extension tool. This latter configuration has the advantage of allowing identification those extensions that fall within the scope of a particular delivered feature list, and implementation of these features within the software tool.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04782382A EP1668444A4 (en) | 2003-08-29 | 2004-08-27 | Improved computerized extension apparatus and methods |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/651,560 | 2003-08-29 | ||
US10/651,560 US20050049843A1 (en) | 2003-08-29 | 2003-08-29 | Computerized extension apparatus and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2005022338A2 true WO2005022338A2 (en) | 2005-03-10 |
WO2005022338A3 WO2005022338A3 (en) | 2006-12-28 |
Family
ID=34217433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2004/027887 WO2005022338A2 (en) | 2003-08-29 | 2004-08-27 | Improved computerized extension apparatus and methods |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050049843A1 (en) |
EP (1) | EP1668444A4 (en) |
KR (1) | KR20060087537A (en) |
CN (1) | CN1973290A (en) |
WO (1) | WO2005022338A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122428B2 (en) | 2007-06-26 | 2012-02-21 | Analog Devices, Inc. | Methods and apparatus for automation and facilitating design of register maps |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7944467B2 (en) * | 2003-12-01 | 2011-05-17 | Omnivision Technologies, Inc. | Task-based imaging systems |
JP2007513427A (en) | 2003-12-01 | 2007-05-24 | シーディーエム オプティックス, インコーポレイテッド | System and method for optimizing the design of optical and digital systems |
US7788078B1 (en) * | 2004-02-27 | 2010-08-31 | Synopsys, Inc. | Processor/memory co-exploration at multiple abstraction levels |
US7634768B2 (en) | 2005-02-17 | 2009-12-15 | Intel Corporation | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
US7415701B2 (en) * | 2005-02-17 | 2008-08-19 | Intel Corporation | Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine |
US7363610B2 (en) | 2005-06-21 | 2008-04-22 | Nvidia Corporation | Building integrated circuits using a common database |
US7483823B2 (en) | 2005-06-21 | 2009-01-27 | Nvidia Corporation | Building integrated circuits using logical units |
EP1736905A3 (en) * | 2005-06-21 | 2007-09-05 | Nvidia Corporation | Building integrated circuits using logical units |
CN101288013B (en) * | 2005-09-19 | 2010-12-08 | Cdm光学有限公司 | Task-based imaging system |
US7793248B1 (en) * | 2005-11-23 | 2010-09-07 | Altera Corporation | Method and apparatus for parameterizing hardware description language code in a system level design environment |
US20070162593A1 (en) * | 2006-01-09 | 2007-07-12 | Microsoft Corporation | Abstracting help calls using a documentation abstraction layer |
US7757224B2 (en) * | 2006-02-02 | 2010-07-13 | Microsoft Corporation | Software support for dynamically extensible processors |
US9064076B1 (en) * | 2006-03-23 | 2015-06-23 | Synopsys, Inc. | User interface for facilitation of high level generation of processor extensions |
US7827517B1 (en) * | 2006-05-19 | 2010-11-02 | Altera Corporation | Automated register definition, builder and integration framework |
US9158538B2 (en) * | 2007-05-21 | 2015-10-13 | International Business Machines Corporation | User-extensible rule-based source code modification |
KR100911324B1 (en) * | 2007-06-22 | 2009-08-07 | 삼성전자주식회사 | Method for managing variability point and appratus therefor |
US8326592B2 (en) * | 2007-12-21 | 2012-12-04 | Cadence Design Systems, Inc. | Method and system for verifying electronic designs having software components |
WO2010064205A1 (en) * | 2008-12-03 | 2010-06-10 | Nxp B.V. | System and method for viterbi decoding using application specific extensions |
KR101553652B1 (en) * | 2009-02-18 | 2015-09-16 | 삼성전자 주식회사 | Apparatus and method for compiling instruction for heterogeneous processor |
WO2011123151A1 (en) * | 2010-04-02 | 2011-10-06 | Tabula Inc. | System and method for reducing reconfiguration power usage |
US20110307904A1 (en) * | 2010-06-14 | 2011-12-15 | James Malnati | Method and apparatus for automation language extension |
US20120185820A1 (en) * | 2011-01-19 | 2012-07-19 | Suresh Kadiyala | Tool generator |
US9204460B2 (en) | 2011-06-06 | 2015-12-01 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and systems for a generic multi-radio access technology |
US9043765B2 (en) * | 2011-11-09 | 2015-05-26 | Microsoft Technology Licensing, Llc | Simultaneously targeting multiple homogeneous and heterogeneous runtime environments |
US8650525B2 (en) * | 2012-06-22 | 2014-02-11 | Altera Corporation | Integrated circuit compilation |
US9880820B2 (en) * | 2013-06-02 | 2018-01-30 | Microsoft Technology Licensing, Llc | Programming language with extensions using dynamic keywords |
US9875290B2 (en) * | 2014-08-15 | 2018-01-23 | Deloitte It Inc. | Method, system and computer program product for using an intermediation function |
US9507891B1 (en) * | 2015-05-29 | 2016-11-29 | International Business Machines Corporation | Automating a microarchitecture design exploration environment |
US11275582B2 (en) * | 2017-01-06 | 2022-03-15 | Montana Systems Inc. | Event-driven design simulation |
CN108460179A (en) * | 2018-01-11 | 2018-08-28 | 郑州云海信息技术有限公司 | Belong to the method and system of line in pcb board design using quick key switch GND |
WO2022182796A1 (en) * | 2021-02-23 | 2022-09-01 | Coda Project, Inc. | System, method, and apparatus for publication and external interfacing for a unified document surface |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763242A (en) * | 1985-10-23 | 1988-08-09 | Hewlett-Packard Company | Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility |
US5535331A (en) * | 1987-09-04 | 1996-07-09 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
US5555201A (en) * | 1990-04-06 | 1996-09-10 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information |
US5553002A (en) * | 1990-04-06 | 1996-09-03 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface |
US5544067A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US5867399A (en) * | 1990-04-06 | 1999-02-02 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description |
US5450586A (en) * | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
US5491640A (en) * | 1992-05-01 | 1996-02-13 | Vlsi Technology, Inc. | Method and apparatus for synthesizing datapaths for integrated circuit design and fabrication |
EP0592715B1 (en) * | 1992-10-15 | 1997-06-11 | Siemens Aktiengesellschaft | Checking design for testability rules with a VHDL simulator |
US5361373A (en) * | 1992-12-11 | 1994-11-01 | Gilson Kent L | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5404319A (en) * | 1993-02-11 | 1995-04-04 | Analog, Inc. | Translation of behavioral modeling properties into an analog hardware description language |
US5493508A (en) * | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US5537580A (en) * | 1994-12-21 | 1996-07-16 | Vlsi Technology, Inc. | Integrated circuit fabrication using state machine extraction from behavioral hardware description language |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US6026219A (en) * | 1995-05-12 | 2000-02-15 | Synopsys, Inc. | Behavioral synthesis links to logic synthesis |
US5898595A (en) * | 1995-05-26 | 1999-04-27 | Lsi Logic Corporation | Automated generation of megacells in an integrated circuit design system |
US5841663A (en) * | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US5819064A (en) * | 1995-11-08 | 1998-10-06 | President And Fellows Of Harvard College | Hardware extraction technique for programmable reduced instruction set computers |
US5696956A (en) * | 1995-11-08 | 1997-12-09 | Digital Equipment Corporation | Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents |
US6035123A (en) * | 1995-11-08 | 2000-03-07 | Digital Equipment Corporation | Determining hardware complexity of software operations |
US5819050A (en) * | 1996-02-29 | 1998-10-06 | The Foxboro Company | Automatically configurable multi-purpose distributed control processor card for an industrial control system |
US5854929A (en) * | 1996-03-08 | 1998-12-29 | Interuniversitair Micro-Elektronica Centrum (Imec Vzw) | Method of generating code for programmable processors, code generator and application thereof |
US6173434B1 (en) * | 1996-04-22 | 2001-01-09 | Brigham Young University | Dynamically-configurable digital processor using method for relocating logic array modules |
US5748875A (en) * | 1996-06-12 | 1998-05-05 | Simpod, Inc. | Digital logic simulation/emulation system |
US5812416A (en) * | 1996-07-18 | 1998-09-22 | Lsi Logic Corporation | Integrated circuit design decomposition |
US5994892A (en) * | 1996-07-31 | 1999-11-30 | Sacramento Municipal Utility District | Integrated circuit design automatic utility meter: apparatus & method |
US6134705A (en) * | 1996-10-28 | 2000-10-17 | Altera Corporation | Generation of sub-netlists for use in incremental compilation |
US6006022A (en) * | 1996-11-15 | 1999-12-21 | Microsystem Synthesis, Inc. | Cross-linked development and deployment apparatus and method |
US5854930A (en) * | 1996-12-30 | 1998-12-29 | Mci Communications Corporations | System, method, and computer program product for script processing |
US6772136B2 (en) * | 1997-08-21 | 2004-08-03 | Elaine Kant | System and method for financial instrument modeling and using Monte Carlo simulation |
US6195593B1 (en) * | 1997-09-03 | 2001-02-27 | Seiko Epson Corporation | Reusable modules for complex integrated circuit devices |
US6226776B1 (en) * | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US6009251A (en) * | 1997-09-30 | 1999-12-28 | Synopsys, Inc. | Method and system for layout verification of an integrated circuit design with reusable subdesigns |
US6360350B1 (en) * | 1997-10-07 | 2002-03-19 | International Business Corporation | Method and system for performing circuit analysis on an integrated-circuit design having design data available in different forms |
US5999734A (en) * | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
US5949993A (en) * | 1997-10-31 | 1999-09-07 | Production Languages Corporation | Method for the generation of ISA simulators and assemblers from a machine description |
EP0926589A1 (en) * | 1997-12-24 | 1999-06-30 | STMicroelectronics S.r.l. | Processor having internal control instructions |
US6378123B1 (en) * | 1998-02-20 | 2002-04-23 | Lsi Logic Corporation | Method of handling macro components in circuit design synthesis |
US6421818B1 (en) * | 1998-02-20 | 2002-07-16 | Lsi Logic Corporation | Efficient top-down characterization method |
US6438678B1 (en) * | 1998-06-15 | 2002-08-20 | Cisco Technology, Inc. | Apparatus and method for operating on data in a data communications system |
HUP0301274A2 (en) * | 1998-09-30 | 2003-08-28 | Cadence Design Systems | Block based design methodology |
US6862563B1 (en) * | 1998-10-14 | 2005-03-01 | Arc International | Method and apparatus for managing the configuration and functionality of a semiconductor design |
WO2000022553A2 (en) * | 1998-10-14 | 2000-04-20 | Arc Cores Limited | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US6356796B1 (en) * | 1998-12-17 | 2002-03-12 | Antrim Design Systems, Inc. | Language controlled design flow for electronic circuits |
US6477697B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Adding complex instruction extensions defined in a standardized language to a microprocessor design to produce a configurable definition of a target instruction set, and hdl description of circuitry necessary to implement the instruction set, and development and verification tools for the instruction set |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6408428B1 (en) * | 1999-08-20 | 2002-06-18 | Hewlett-Packard Company | Automated design of processor systems using feedback from internal measurements of candidate systems |
US6457173B1 (en) * | 1999-08-20 | 2002-09-24 | Hewlett-Packard Company | Automatic design of VLIW instruction formats |
US6385757B1 (en) * | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
US7089278B1 (en) * | 1999-09-07 | 2006-08-08 | Fuji Xerox Co., Ltd. | Anchored conversations: adhesive, in-context, virtual discussion forums |
AU1232501A (en) * | 1999-10-29 | 2001-05-14 | Antrim Design Systems, Inc. | Mixed signal synthesis behavioral models and use in circuit design optimization |
US20020087828A1 (en) * | 2000-12-28 | 2002-07-04 | International Business Machines Corporation | Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors |
US6968346B2 (en) * | 2001-04-23 | 2005-11-22 | International Business Machines Corporation | XML-based system and method for collaborative web-based design and verification of system-on-a-chip |
US20030009730A1 (en) * | 2001-06-16 | 2003-01-09 | Chen Michael Y. | Enhanced platform based SOC design including exended peripheral selection and automated IP customization facilitation |
US6757882B2 (en) * | 2001-06-16 | 2004-06-29 | Michael Y. Chen | Self-describing IP package for enhanced platform based SOC design |
WO2003091914A1 (en) * | 2002-04-25 | 2003-11-06 | Arc International | Apparatus and method for managing integrated circuit designs |
-
2003
- 2003-08-29 US US10/651,560 patent/US20050049843A1/en not_active Abandoned
-
2004
- 2004-08-27 EP EP04782382A patent/EP1668444A4/en not_active Withdrawn
- 2004-08-27 KR KR1020067004217A patent/KR20060087537A/en not_active Application Discontinuation
- 2004-08-27 CN CNA2004800319577A patent/CN1973290A/en active Pending
- 2004-08-27 WO PCT/US2004/027887 patent/WO2005022338A2/en active Application Filing
Non-Patent Citations (1)
Title |
---|
See references of EP1668444A4 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122428B2 (en) | 2007-06-26 | 2012-02-21 | Analog Devices, Inc. | Methods and apparatus for automation and facilitating design of register maps |
Also Published As
Publication number | Publication date |
---|---|
CN1973290A (en) | 2007-05-30 |
EP1668444A2 (en) | 2006-06-14 |
WO2005022338A3 (en) | 2006-12-28 |
EP1668444A4 (en) | 2007-08-01 |
KR20060087537A (en) | 2006-08-02 |
US20050049843A1 (en) | 2005-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050049843A1 (en) | Computerized extension apparatus and methods | |
KR100818826B1 (en) | A computerized apparatus for generating a design of an integrated circuit and a method for generating a hierarchy within an integrated circuit design having a plurality of components | |
US10360327B2 (en) | Modifying a virtual processor model for hardware/software simulation | |
Hoffmann et al. | A novel methodology for the design of application-specific instruction-set processors (ASIPs) using a machine description language | |
Hoffmann et al. | A methodology for the design of application specific instruction set processors (ASIP) using the machine description language LISA | |
KR100775547B1 (en) | Automated processor generation system for designing a configurable processor and method for the same | |
JP4619606B2 (en) | Automated processor generation system and method for designing a configurable processor | |
GRLIB | GRLIB IP Library User's Manual | |
Pees et al. | Retargetable compiled simulation of embedded processors using a machine description language | |
Schliebusch et al. | Optimized ASIP synthesis from architecture description language models | |
Wagner et al. | Strategies for the integration of hardware and software IP components in embedded systems-on-chip | |
Dömer | System-level modeling and design with the Specfic language | |
Plavec | Soft-core processor design | |
Wunderlich et al. | In-system FPGA prototyping of an Itanium microarchitecture | |
IL142342A (en) | Method and apparatus for managing the configuration and functionality of a semiconductor design | |
Jones et al. | PACT HDL: a compiler targeting ASICs and FPGAs with power and performance optimizations | |
Vennin et al. | Embed Scripting inside SystemC. | |
Hoffmann et al. | A Novel Methodology for the Design of Application Specific Integrated Precessors (ASIP) Using a Machine Description Language | |
Dingankar et al. | MMV: Metamodeling Based Microprocessor Valiation Environment | |
Kranenburg | Design of a portable and customizable microprocessor for rapid system prototyping | |
Ward | Improving the Timing Analysis of Ravenscar/SPARK Ada by Direct Compilation to Hardware | |
Moreira | Simulador para Processadores de Sinal Digital de Arquitectura VLIW | |
Emerson | A survey of embedded systems tools | |
Goudarzi et al. | The ODYSSEY approach to early simulation-based equivalence checking at ESL level using automatically generated executable transaction-level model | |
Sergii | Generic Modeling Environment (GME) Tool for ADEOS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200480031957.7 Country of ref document: CN |
|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DPEN | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101) | ||
WWE | Wipo information: entry into national phase |
Ref document number: 1020067004217 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004782382 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 751/KOLNP/2006 Country of ref document: IN |
|
WWP | Wipo information: published in national office |
Ref document number: 2004782382 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 1020067004217 Country of ref document: KR |