throbber
IN THE UNITED STATES PATENT AND TRADEMARK OFFICE
`BEFORE THE PATENT TRIAL AND APPEAL BOARD
`
`
`
`
`
`
`
`
`
`Trial No.:
`
`
`
`
`
`
`
`
`
`
`IPR 2012-00042
`
`Atty. Dkt. No.
`
`
`007121.00004
`
`
`
`
`
`
`
`
`
`
`
`
`In re U.S. Patent No. 6,240,376
`Application No.:
`09/127,587
` Filed:
`July 31, 1998
` Issued:
`May 29, 2001
`
`Alain Raynaud
`Luc M. Burgun
`
`Patent Owner: Mentor Graphics
`Corporation
`
`METHOD AND
`APPARATUS FOR GATE-
`LEVEL SIMULATION OF
`SYNTHESIZED
`REGISTER TRANSFER
`LEVEL DESIGNS WITH
`SOURCE-LEVEL
`DEBUGGING
`
`
`Inventors:
`
`For:
`
`
`
`
`
`
`
`
`DECLARATION OF WILLIAM D. DAVIS
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`I, WILLIAM D. DAVIS, declare as follows:
`
`1.
`
`I am a member of the Bar of the State of Texas, and I am attorney
`
`with the law firm of Davis and Associates located in Dripping Springs, Texas. I am
`
`registered to practice before the U.S. Patent and Trademark Office in patent cases,
`
`and my registration number is 38,428.
`
`
`
`1
`
`Mentor Graphics Corp. 2033
`Synopsys, Inc. v. Mentor Graphics Corp.
`IPR2012-00042
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`2.
`
`I have personal knowledge of the facts set forth in this declaration,
`
`and, if called to testify as a witness, could and would do so competently.
`
`3.
`
`I was previously employed as an associate with the law firm of
`
`Blakely Sokoloff Taylor Zafman, LLP (“BSTZ”). During my employment at
`
`BSTZ, I was responsible for drafting and filing U.S. patent application no.
`
`09/122,493 (which issued as U.S. patent no. 6,336,087, hereinafter the “ ‘087
`
`patent” or “ ‘087 patent application” as context requires) and U.S. patent
`
`application no. 09/127,584 (which issued as U.S. patent no. 6,240,376, hereinafter
`
`the “ ‘376 patent” or “ ‘376 patent application” as context requires) in the role of
`
`outside counsel for Mentor Graphics Corporation. The ‘376 patent application was
`
`filed July 31, 1998. The ‘087 patent application was filed on July 24, 1998. The
`
`detailed disclosures of these two applications are substantially the same.
`
`4.
`
`I submit this declaration to provide evidence of: (1) the conception of
`
`the invention(s) disclosed and invention claimed in the ‘376 patent by the inventors
`
`Alain Raynaud and Luc M. Burgun (hereinafter the “inventors”); and (2)
`
`reasonable diligence by the inventors and myself in reducing the invention claimed
`
`in the ‘376 patent to practice from prior to June 16, 1998 to the filing of the ’087
`
`patent application. At the time of drafting and filing the applications, I understood
`
`the inventors were employed by Meta Systems, a division of Mentor Graphics
`
`Corporation.
`
`2
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`5.
`
`I have maintained in my possession, since the dates of original
`
`receipt/creation to the present day, attorney-client privileged material and attorney
`
`work product material related to the drafting and filing of the ‘087 patent
`
`application (hereinafter the “Archived Material”). I know this material to be
`
`related to the ‘087 patent application, because I have maintained the material on a
`
`“ZIP” floppy disk within a directory titled “002282.P030,” which was the BSTZ
`
`attorney docket number for the ‘087 patent application.
`
`6.
`
`The Archived Material includes an electronic copy of a document
`
`having the file name “BILL.DOC” with a “date modified” timestamp of January
`
`5, 1998. A printed copy of the document is attached hereto as Exhibit A. The
`
`BILL.DOC document includes unformatted text that substantively matches a
`
`printed article also in my possession entitled “Gate Level Simulation of
`
`Synthesized RTL Designs with Source Level Debugging,” which identifies Alain
`
`Raynaud and Luc Burgun as the authors (hereinafter the “Burgun Article”). A
`
`printed copy of the Burgun Article is attached hereto as Exhibit B. I recognize this
`
`Burgun Article as the inventors’ disclosure of the invention originally provided to
`
`me by Mentor Graphics, which I used as a basis for drafting the ‘087 patent
`
`application.
`
`7.
`
`The Archived Material includes an electronic copy of an email
`
`drafted by me to Brian Dalio, the Mentor Graphics and Meta Systems contact
`
`3
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`person for the ‘087 patent application. The electronic copy of the email has the file
`
`IPR 2012-00042
`
`
`
`name “dalio.doc” with a “date modified” timestamp of January 9, 1998. A printed
`
`copy of the email content is attached hereto as Exhibit C with privileged portions
`
`redacted. As indicated in the redacted copy, I acknowledged to Mr. Dalio the
`
`receipt of the Burgun Article, which occurred at least by January 8, 1998, the date
`
`I last modified the dalio.doc file.
`
`8.
`
`Several draft iterations the specification for ‘087 patent application
`
`are further included in the Archived Material. The draft iterations of the
`
`specification were authored solely by me based on the Burgun Article, with edits
`
`provided by the inventors and me over a time period spanning prior to June 16,
`
`1998 to the filing of the final specification on July 24, 1998. The edits are marked
`
`with underscores to indicate added text and strikethrough to indicate deleted text.
`
`Using the “tracked changes” function of Microsoft WORD, each edit is labeled
`
`with the author of the edit and a timestamp of when the edit was made. Edits made
`
`by the inventors are identified as being authored by “Meta Systems” and edits
`
`made by me are identified as being authored by “BSTZ.” The files containing each
`
`iteration further include a “date modified” timestamp indicating the date and time I
`
`last modified the file by editing the draft specification (with or without tracking
`
`changes) or incorporating previous edits made as regular text, i.e., removing the
`
`tracking information.
`
`4
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`9.
`
`The timestamps in the draft iterations of the specification indicate that
`
`the inventors and I worked in 1998 to complete the draft specification at least on
`
`May 28 (Thu.), June 12 (Fri.), June 18 (Thu.), June 23 (Tue.), June 25 (Thu.),
`
`June 26 (Fri.), June 29 (Mon.), June 30 (Tue.), June 31 (Wed.), July 1 (Thu.),
`
`July 2 (Fri.), July 6 (Mon.), July 20 (Mon.), and July 21 (Tues.). Specific draft
`
`iterations of the specification including these time stamps are as follows:
`
`a.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “P030rev9.doc” (hereinafter the “rev 9
`
`specification”). The rev 9 specification included previous draft iterations of
`
`the specification having edits by the inventors and myself that I incorporated
`
`as regular text, i.e., no tracked changes). The rev 9 specification was last
`
`modified by me on May 27, 1998, as indicated by “date modified”
`
`timestamp of the file.
`
`b.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “P030rev9.1.doc” (hereinafter the “rev 9.1
`
`specification”). The rev 9.1 specification, an amended version of the rev 9
`
`specification, includes edits received from the inventors, which are time
`
`stamped May 28, 1998 and June 12, 1998. The rev 9.1 specification was
`
`last modified by me on June 18, 1998, as indicated by the “date modified”
`
`timestamp of the file.
`
`5
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`c.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “02282.p030 application 11” (hereinafter the
`
`“rev 11 specification”). In the rev 11 specification, I reviewed and
`
`incorporated many of the inventors’ edits time stamped May 28, 1998 and
`
`June 12, 1998 between the period of June 12, 1998 and June 18, 1998. I
`
`further made additional edits, which are time stamped June 18, 1998. The
`
`rev 11 specification was last modified by me on June 18, 1998, as indicated
`
`by the “date modified” timestamp of the file.
`
`d.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “02282.p030 application 12” (hereinafter the
`
`“rev 12 specification”). In the rev 12 specification, I reviewed and
`
`incorporated previous tracked edits in the rev 11 specification and made
`
`additional edits, which are time stamped June 23, 1998. The rev 12
`
`specification was last modified by me on June 23, 1998, as indicated by the
`
`“date modified” timestamp of the file.
`
`e.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “rev13b.doc” (hereinafter the “rev 13b
`
`specification”). The rev 13b specification includes the June 23 1998 edits
`
`from the rev 12 specification and additional edits I made, which are time
`
`stamped June 25, 1998. The rev 13b specification was last modified by me
`
`6
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`on June 25, 1998, as indicated by the “date modified” timestamp of the file.
`
`f.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “luc” (hereinafter the “Luc specification”).
`
`The Luc specification includes additional inventors’ edits, which are time
`
`stamped June 26, 1998 and June 29, 1998. The Luc specification was last
`
`modified by me on July 6, 1998, as indicated by the “date modified”
`
`timestamp of the file.
`
`g.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “alain” (hereinafter the “Alain
`
`specification”). The Alain specification includes additional inventors’ edits,
`
`which are time stamped June 30, 1998, July 1, 1998, and July 2, 1998. The
`
`Alain specification was last modified by me on July 6, 1998, as indicated by
`
`the “date modified” timestamp of the file.
`
`h.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “marked-up luc:alain diff” (hereinafter the
`
`“Luc/Alain specification”). The Luc/Alain specification includes a
`
`comparison of the Luc specification and the Alain specification made by me,
`
`for my review of the inventors’ edits. The differences between the Luc
`
`specification and the Alain specification are indicated as edits made by me
`
`and time stamped July 6, 1998. The Luc/Alain specification was last
`
`7
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`IPR 2012-00042
`
`modified by me on July 6, 1998, as indicated by the “date modified”
`
`timestamp of the file.
`
`i.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “rtl_debugar.rtf” (hereinafter the “RTL
`
`_debugar specification”). The RTL_debugar specification includes a
`
`combination of previous edits by the inventors and me made from June 23,
`
`1998 to July 2, 1998, and additional edits that do not indicate the author or a
`
`time stamp. The RTL_debugar specification was last modified by me on
`
`July 20, 1998, as indicated by the “date modified” timestamp of the file.
`
`j.
`
`An electronic copy of a draft specification of the ‘087 patent
`
`application having a file name “P030.rtf” (hereinafter the “P030
`
`specification”). The P030 specification includes previous edits from the RTL
`
`_debugar specification and additional edits made by me, which are time
`
`stamped July 20, 1998 and July 21, 1998. The P030 specification was last
`
`modified by me on July 21, 1998, as indicated by the “date modified”
`
`timestamp of the file.
`
`10. My above-described edits to the specification were made by me while
`
`employed out of BSTZ’s Lake Oswego, Oregon office. The above-described
`
`inventors’ edits were made in France. I know the location of the inventors based
`
`on their correspondence address, telephone number, and facsimile number, all of
`
`8
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`which I used to communicate with the inventors.
`
`
`
`IPR 2012-00042
`
`11. During the period of July 21, 1998 to July 24, 1998, I thoroughly
`
`reviewed the prior edits, made additional changes, and then filed the ‘087 patent
`
`application.
`
`12. My docket during the drafting of the ‘087 patent application typically
`
`included 3-5 office action responses per week and preparation and filing of new
`
`applications (including invention disclosure meetings and associated travel for
`
`such meetings). I performed patent prosecution tasks from my docket in the order
`
`that the work was received or as required by due dates. Because applications I
`
`worked on at the time (including the ‘087 patent application) were drafted over
`
`several weeks with several revisions being exchanged between myself and the
`
`inventors, gaps ranging from one day to two weeks between working on
`
`applications would have been necessary and unavoidable, as I was required to
`
`balance the workload and address filing deadlines each week for office action
`
`responses and new applications.
`
`13. All of the statements made in this declaration of my own knowledge
`
`are true. All statements made based on information and belief are believed to be
`
`true. Further, these statements are made with the knowledge that willful false
`
`statements and the like so made are punishable by fine or imprisonment, or both,
`
`under § 1001 of Title 18 of the United States Code and that such willful false
`
`9
`
`MG 2033
`
`

`

`Declaration of William D Davis
`
`‘
`
`IPR 2012—00042
`
`statements may jeopardize the validity of the subject patent.
`
`Respectfully submitted,
`
`5;”
`r"
`1;
`5E
`,
`3
`W
`t»-
`fiw’f/gégtgkt
`19%;” A;5414:?”
`4:“?,4;Ligfizfigéig
`'32(51
`<35 i; 9/ 5
`
`William D. Davis
`Date F
`”
`
`10
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`MG 2033
`
`

`

`Declaration of William D Davis
`
`
`
`
`
`IPR 2012-00042
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`EXHIBIT A
`
`
`
`
`
`(cid:20)(cid:20)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`Abstract
`
`In this paper, we present a new approach for simulating a digital circuit using a gate-level simulator
`while presenting a high-level view which is similar to Source-Level debugging proposed by RTL
`Software simulators. While the simulation is performed on actual gates, enough information is
`extracted through a process that we call instrumentation, so that the user can set breakpoints
`inside the RTL source code, as well as examine and navigate within the hierarchy of signal of the
`original source code.
`
`This new approach is especially suitable in the context of hardware accelerators and emulators: it
`combines the speed of simulation with the ease of use of traditional RTL software simulation
`environments.
`
`Introduction
`RTL Simulation
`
`
`1.1
`
`Chip designers have adopted high-level hardware description languages, partly because of the
`increasing complexity of the chips that the electronic market requires. The two main languages
`used for hardware design are VHDL and Verilog. Obtaining a gate-level netlist of the resulting chip
`is performed automatically by a process called synthesis. Synthesis Tools only accept a subset of
`the HDL that is called Register Transfer Level (RTL).
`
` 1
`
` A
`
` very important step is the simulation and validation of designs at the RT-level. Designers want to
`debug designs in the same environment that they describe them, for obvious convenience and
`efficiency reasons. As in software language debugging environments, designers can set
`breakpoints on a line of their source code, navigate the design hierarchy, view any variable or
`signal and see how it evolves. Another advantage of RTL Debug is that RTL simulation is typically
`an order of magnitude faster than gate-level simulation. Finally, the state of the art in synthesis has
`reached a point where a design which is verified at the RT-level can be considered correct. RTL
`sign-off is becoming more and more popular.
`
`1.2
`
`Gate-Level Simulation
`
` A
`
` fast turnaround time is very important in helping the designer find, understand and correct as
`many problems as possible. Often, billions of vectors have to be applied to a complex design in
`order to exercise certain cases, which can take hours and even days for a software simulator.
`Hardware accelerators and emulators offer a dramatic speedup in simulation performance, and
`their usage is becoming commonplace. While providing blazing fast speed, their main limitation is
`that being hardware-based, they only simulate designs at the gate-level, which prohibits RTL
`Simulation. Therefore, they are used later in the design flow, once synthesis has been performed.
`
`After synthesis, most high-level information from the original source code is lost. As there clearly is
`a need for designers to use hardware-accelerated simulation in a more friendly environment than
`gate-level, some work has attempted to bring hardware-based simulators closer to RTL simulation.
`Quick-Turn’s HDL-ICE (1) lets designers examine the RTL source code during emulation. It also
`quarantees that all the signals of the RTL code are visible. Another enhancement (2) has dealt with
`
`(cid:20)(cid:21)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`Mixed-Mode Simulation
`
`incremental compilation: whenever the designer makes modification in the RTL code, only those
`parts that have changed are synthesized again. This improves the time-to-emulation factor.
`
`Little work has focused on preserving breakpoints through synthesis. Koch et al (3) described a
`system that preserves breakpoints when transforming behavioral code to RTL code. It relies on the
`internals of the algorithm that generates the state controller for the behavioral code, and cannot be
`applied to RTL code.
`
`All these contributions still don’t qualify hardware-based simulators for RTL simulation. Only the
`most basic feature of RTL simulators (signal visibility) is provided. Most other features, ranging
`from setting breakpoints to analyzing the source code coverage, are not available.
`
`1.3
`
`We propose a new approach that closes the gap between hardware-based simulators (and gate-
`level simulation in general) and RTL simulation. This method relies on automatically modifying the
`HDL code (VHDL or Verilog) before it is synthesized, so that the resulting gate-level design
`contains additional hardware that is used to reconstitute the flow of execution of the original
`source code. We call this process instrumenting the source code. The resulting gate-level design
`can then be simulated at the RT-level with any gate-level simulator including hardware accelerators
`and emulators.
`
`Figure 1 shows such a flow. The instrumentation doesn’t have to take place before synthesis:
`figure 15 shows a different implementation of the instrumentation principles.
`
`If the simulator has the capacity to set a breakpoint whenever certain s
`
`signals reach a given value, then it is possible to implement breakpoints at the RT-level: whenever
`the user specifies a breakpoint in the source code, the condition is converted to a comparison with
`key signals.
`
`With the data acquired by the instrumentation process, it is possible to implement a source code
`coverage tool. By storing the instrumentation signals for each cycle of execution, one easily obtains
`how many times each line of RTL source code has been activated. Numerous methods have been
`presented in the past on how to process this information, the novelty of the approach is the means
`to obtain the data on which lines of the original source code are active at each simulation cycle.
`
`The data collected could also be used by a Finite State Machine (FSM) analyzer, that would verify
`for instance that all the possible transitions of an FSM have been tested.
`
`Finally, the instrumentation data can be used to enhance the source code display, for instance by
`highlighting the execution paths that are active at a given cycle. This would be a visual help for the
`designer, as he could understand without having to check the value of any signal, what each
`process is actually doing at each cycle.
`
`
`(cid:20)(cid:22)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`Altogether, these mechanisms give the user the feeling that source-level RTL debugging, including
`setting breakpoints, is possible in the context of gate-level simulators. We call this capacity mixed-
`mode simulation (RTL and Gate-Level).
`
`1.4
`
`
`
`
`Background on Design Methodology
`
`
`
`figure 1: Instrumentation Flow.
`
` A
`
` design is built by assembling elementary blocks hierarchically. In VHDL, a block corresponds to
`an architecture of an entity. In Verilog, a block corresponds to a module. Each architecture or
`module is composed of a declarative part and a statement part. The declarative part contains for
`instance the list of the ports (connectors) of the block, and is of little interest for instrumentation.
`
`The statement part is the place which describes the behavior of the block and this is where the
`user needs help in debugging his design. Concurrent statements assign a logic expression to a
`signal continuously: guaranteeing that signals can be observed and allowing breakpoints when
`they reach certain values is enough. Sequential statements assign various signal different
`expressions depending on the execution flow of the sequence. This is where source-level
`debugging is the most powerful. Figure 2 is an example of such statements.
`
`Sequential Code corresponds to VHDL processes and to Verilog always blocks. Their main
`characteristic is that they are built of an unlimited combination of nested statements such as loops,
`alternatives and conditions. There are two kinds of sequential statements: those that are level
`sensitive, meaning outputs one depend on the value of the inputs, and those that rely on events to
`compute the outputs. The first ones are synthesized to combinational gates and latches only,
`whereas the second ones use sequential gates such as flip-flops.
`
`The instrumentation is different for both cases.
`
`Section 2 explains how to instrument level-sensitive code, while section 3 deals with edge-sensitive
`RTL code. Section 4 presents a way to detect when processes become active. Section 5 details
`various optimizations that can be applied to the instrumentation mechanisms explained in the
`previous sections. Finally, considerations on synthesis are found in section 6.
`
`
`
`
`
`The simplest way to instrument level-sensitive code without losing on generality is to attach one
`variable to each elementary statement. Indeed, the goal being to detect when a given elementary
`statement is executed, it is clear that attaching one variable to each elementary statement will fulfill
`the goal. Elementary statements include signal assignments, variable assignments and function
`and procedure calls. All other control statements (such as if-then-else, case-when, for loop,
`module declarations, etc.....) are of course not instrumented.
`
`The algorithm is as follows:
`
`2
`
`2.1
`
`Level-Sensitive Code Instrumentation
`
`General Instrumentation
`
`(cid:20)(cid:23)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`(cid:120)
`
`
`
`
`
`
`
`Figure 3: Instrumented Sample Code.
`
`Figure 4: Synthesized Instrumented Code.
`
`initialization: all variables that monitor an elementary statement are set to zero at the beginning
`of the process
`(cid:120) Flow instrumentation: each time an elementary statements is encountered, a statement that
`sets a variable to one is added at the same position in the code
`(cid:120) Gathering: all the variables are assigned to global signals at the end of the process
`
`The major advantage of this algorithm is that it is flexible and will tolerate all kinds of coding style.
`
`Once instrumented, the code above will look like the one on Figure 3. The code added by the
`instrumentation is shown in italics.
`
`
`
`
`It is interesting to note that in the example above, both alternatives of the if statement can be true
`during the same clock cycle. Indeed, whenever one bit of vector a is equal to 0 while another bit is
`equal to 1, both conditions will be true (for different values of the index i ). This example is a good
`illustration of the fact that there is no obvious simplification between the instrumentation signals of
`two alternatives such as if-then-else.
`
`Figure 4 shows the gates that are generated by a Synthesis Tool for the instrumented code of
`Figure 3. As expected, signal trace4 is a logical OR of all the bits of vector a when reset is inactive,
`signal trace1 is equivalent to signal reset, and so on.
`
`
`
`2.2
`
`This method quarantees that when the original source code infers latches (because some signals
`are not assigned in every possible flow of execution), the instrumentation signal won’t infer latches.
`Indeed, the logic to detect which line of code is active is purely combinational, even when the code
`generalities latches.
`
`
`
`
`Figure 5 shows a sample Verilog code that infers a latch with a synchronous reset. Figure 6 shows
`the instrumented code (begin-end statements were omitted for clarity), Figure 7 shows the resulting
`synthesized gates.
`
`2.3
`
`Instrumentation and Latches
`
`
`
`Figure 5: Sample Verilog Code that Infers a Latch.
`
`Cross-Reference File
`
` A
`
` cross-reference file is generated which contains the mapping between line numbers and
`instrumentation signals. Each time an instrumentation variable (and its associated signal) is added
`to the source code, all the line numbers of the elementary statements that belong to the same
`block are added to this file. The line number of a block need not be contiguous: for instance, there
`
`(cid:20)(cid:24)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`can be a nested conditional statement in the middle of the block. It is therefore important to check
`all the line numbers of the elementary statements.
`
`Once the instrumentation process is complete, the cross-reference file will be used by the gate-
`level simulation environment to convert user’s breakpoints into actual conditions on instrumentation
`signals.
`
`Edge-Sensitive Code Instrumentation
`Event Handling
`
`
`
`
`
`Figure 8: Sample VHDL Code with Events
`
`Figure 9: Sample Verilog Code with Events
`
`
`3.1
`
`The previous section has correctly dealt with instrumenting the flow of sequential statements when
`they don’t contain references to signal events. Signal events are typically used to specify flip-flops.
`Amore sophisticated algorithm is required when signal events appear. Figures 8 and ( show the
`code for a D flip-flop with asynchronous reset using VDHL and Verilog.
`
`
`
`
`
`In order to detect events on signals correctly, we need to sample those signals using a fast clock
`that is provided by the hardware-based simulator. In terms of RTL, it means that each signal which
`uses events is stored in a flip-flop, and a comparison between the input and output of that flip-flop
`is used as the event. It is equally easy to generate the two other signal attributes that are used in
`VHDL to specify edges: clock’stable is the negation of clock’event, and clock’lastvalue is the
`content of the sampled flip-flop.
`
`The algorithm is as follows:
`
` 3
`
` (cid:120)
`
` event generation: all the signals with events are sampled using a fast clock and an equivalent
`event signal is generated
`(cid:120) process copy: all the processes which reference signal events are duplicated
`
`
`
`
`
`
`
`
`
`
`Figure 10: Sample Instrumented VHDL Code with Events.
`
`Figure 11: Synthesized Instrumented VHDL Code with Events.
`
` (cid:120)
`
` Flow instrumentation: all elementary statements are replaced by a statement that sets a
`variable to one (this is similar to the algorithm) in Section 2)
`(cid:120) event replacement: each time an event is referenced in a process, it is replaced by the event
`signal which has been computed in; the first step.
`
`
`
`Figure 12: Sample Instrumented Verilog Code with Events.
`
`
`
`
`Figure 10 and 12 illustrate the modifications to the previous source code to handle events. In the
`case of Verilog, it is interesting to note that the detection mechanism will be more precise than in
`VHDL: whenever an event occurs on the asynchronous reset signal, the corresponding source line
`will be activated. This is in accordance with the semantics of the language. Also, Verilog always
`
`(cid:20)(cid:25)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
`

`

`Summary
`
`blocks are only activated when an edge is detected: this means that an implicit test must inserted
`in the instrumented code. On the opposite, VHDL constructs test explicitly (through the use of if
`clock’event for instance) for clock edges, therefore it is enough to replace each occurrence of
`clock’event constructs by the instrumented signal clock_event. Figure 11 shows the gates that are
`added by the instrumentation code of figure 10.
`
`3.2
`
`This section has shown how to instrument RTL code. Depending on the type of sequential
`statements to instrument. The instrumentation method for statements that contain signal events is
`generic and is a superset of the combinational method. However, it is recommended to use the
`combinational method whenever possible, as it allows the synthesis tool to detect obvious resource
`sharing. The second method involves duplicating code and it is unclear whether the synthesis tool
`will recognize that the same code appears twice. An expensive phase (in terms of CPU time) of
`resource sharing may need to be applied in order to achieve the same results as the first method.
`
`
`
`An advantage of always duplicating the code the way the second method does it, is to guarantee
`that the gates generated by the synthesis toll are exactly the ones that would have been generated
`if the design had not been instrumented. This can be critical when the user wants to verify the
`result of synthesis at the gate-level, while retaining the RTL breakpoint capacity.
`
`Table 1: Logic Generated in Instrumented Designs.
`
`
`The instrumentation method described in the sections above allows the detection of any path that
`has been taken while a process (VHDL) or an always block (Verilog) is activated. However, when a
`process is not activated, it retains the same data. This actually makes sense in terms of hardware
`description language: as long as the process is not activated again, all the assignments that have
`occurred in the last execution are still active.
`
`Figure 13: Sample Instrumented VHDL Code which detects Process Activation.
`
`If one wants to obtain a behavior even closer to the one of a software RTL simulator, it is
`necessary to generate a second kind of information: the activation of each process. This is done
`simply by looking at the sensitivity list of each process. Logic can then be generated that compares
`the signals on the sensitivity list between two consecutive simulation cycles. Each time this signal
`indicates a difference, it means the process has been executed again.
`
`One way to implement this is to sample all the signals that are on the sensitivity list of a process,
`and detect whenever events occur on any of them. The logical OR condition is equivalent to
`meaning that the process has been activated. Figure 13 shows a process and the instrumented
`code that generates the activation signal.
`
`By combining this information with the information on which execution flow was taken inside a
`process to recreate the illusion of a process being activated and a certain line of the source code
`being executed.
`
`Instrumenting Process Activation
`
`(cid:20)(cid:26)
`
`(cid:48)(cid:42)(cid:3)(cid:21)(cid:19)(cid:22)(cid:22)
`
` 4
`
`
`
`

`

`Optimizations
`
` 5
`
`
`
`
`Instrumentation is a way to obtain the logical equations that correspond to all the conditions for
`which the lines of the source code are activated. However, it is not necessary to implement those
`equations purely in gates that are simulated by the gate-level simulator. Depending on the
`simulator, one can implement part or all of those equations in a way that is specific to the
`simulator. For instance, when using a software simulator, one can decide to implement the
`handling of events by simply comparing the value of a signal with its previous value, assuming this
`information is still available in the internal structures of the simulator.
`
`Section 5.2 presents possible optimizations when a hardware accelerator is used that has
`programmable hardware triggers that can operate on combinations of bits. Section 4 presents a
`way to detect the activation of a process using gates. It could also be implemented in specific
`software if a gate-level software simulator is used.
`
`The tradeoff between implementing the equations partly using gates and partly using specif

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket