Assertion Checker Synthesis for FPGA Emulation

Similar documents
System Verilog Assertions Synthesis Based Compiler

Efficient Automata-Based Assertion-Checker Synthesis of SEREs for Hardware Emulation

FORMAL SPECIFICATION, SYSTEM VERILOG ASSERTIONS & COVERAGE. By Calderón-Rico, Rodrigo & Tapia Sanchez, Israel G.

Contents 1 Introduction 2 Functional Verification: Challenges and Solutions 3 SystemVerilog Paradigm 4 UVM (Universal Verification Methodology)

Efficient Automata-Based Assertion-Checker Synthesis of PSL Properties

CHAPTER 3 METHODOLOGY. 3.1 Analysis of the Conventional High Speed 8-bits x 8-bits Wallace Tree Multiplier

Debug enhancements in assertion-checker generation

ECE 2300 Digital Logic & Computer Organization. More Sequential Logic Verilog

Register Transfer Level in Verilog: Part I

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

ECE 2300 Digital Logic & Computer Organization. More Verilog Finite State Machines

Readings: Storage unit. Can hold an n-bit value Composed of a group of n flip-flops. Each flip-flop stores 1 bit of information.

EPC6055 Digital Integrated Circuits EXAM 1 Fall Semester 2013

Digital Design with FPGAs. By Neeraj Kulkarni

Automated Debugging of SystemVerilog Assertions

Laboratory Exercise 7

CAD for VLSI Design - I. Lecture 21 V. Kamakoti and Shankar Balachandran

Hardware Design Verification: Simulation and Formal Method-Based Approaches William K Lam Prentice Hall Modern Semiconductor Design Series

Assertion-Based Verification

Hardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University

Property-based design with HORUS / SYNTHORUS

Synthesis of System Verilog Assertions

HDLs and SystemVerilog. Digital Computer Design

Verilog Fundamentals. Shubham Singh. Junior Undergrad. Electrical Engineering

Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for best synthesis. Spring 2007 Lec #8 -- HW Synthesis 1

EN2911X: Reconfigurable Computing Topic 02: Hardware Definition Languages

Verilog for High Performance

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

Quick Introduction to SystemVerilog: Sequental Logic

Recommended Design Techniques for ECE241 Project Franjo Plavec Department of Electrical and Computer Engineering University of Toronto

Homework deadline extended to next friday

EECS150 - Digital Design Lecture 10 Logic Synthesis

EEL 4783: HDL in Digital System Design

Nikhil Gupta. FPGA Challenge Takneek 2012

Date Performed: Marks Obtained: /10. Group Members (ID):. Experiment # 11. Introduction to Verilog II Sequential Circuits

ON THE EFFECTIVENESS OF ASSERTION-BASED VERIFICATION

Computer Aided Design Basic Syntax Gate Level Modeling Behavioral Modeling. Verilog

CSE140L: Components and Design Techniques for Digital Systems Lab

Synthesis of Synchronous Assertions with Guarded Atomic Actions

Verilog Sequential Logic. Verilog for Synthesis Rev C (module 3 and 4)

CSE140L: Components and Design

Synthesis of Combinational and Sequential Circuits with Verilog

ECE 574: Modeling and Synthesis of Digital Systems using Verilog and VHDL. Fall 2017 Final Exam (6.00 to 8.30pm) Verilog SOLUTIONS

Logic Synthesis. EECS150 - Digital Design Lecture 6 - Synthesis

VHDL for Synthesis. Course Description. Course Duration. Goals

Digital System Design with SystemVerilog

FPGA for Software Engineers

ENGN1640: Design of Computing Systems Topic 02: Lab Foundations

Pragmatic Simulation-Based Verification of Clock Domain Crossing Signals and Jitter using SystemVerilog Assertions

EN164: Design of Computing Systems Lecture 06: Lab Foundations / Verilog 2

Advanced VLSI Design Prof. Virendra K. Singh Department of Electrical Engineering Indian Institute of Technology Bombay

EECS150 - Digital Design Lecture 10 Logic Synthesis

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations

ALTERA M9K EMBEDDED MEMORY BLOCKS

Verilog Module 1 Introduction and Combinational Logic

a, b sum module add32 sum vector bus sum[31:0] sum[0] sum[31]. sum[7:0] sum sum overflow module add32_carry assign

Outline. EECS Components and Design Techniques for Digital Systems. Lec 11 Putting it all together Where are we now?

Topics. Midterm Finish Chapter 7

Lab #1. Topics. 3. Introduction to Verilog 2/8/ Programmable logic. 2. Design Flow. 3. Verilog --- A Hardware Description Language

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations

Verilog. What is Verilog? VHDL vs. Verilog. Hardware description language: Two major languages. Many EDA tools support HDL-based design

Stuart Sutherland, Sutherland HDL, Inc.

IP Core Design. Lecture 11 Introduction to PSL

VHDL Essentials Simulation & Synthesis

Chapter 5. Digital Design and Computer Architecture, 2 nd Edition. David Money Harris and Sarah L. Harris. Chapter 5 <1>

Advanced FPGA Design Methodologies with Xilinx Vivado

CSE140L: Components and Design Techniques for Digital Systems Lab. Verilog HDL. Instructor: Mohsen Imani UC San Diego. Source: Eric Crabill, Xilinx

FPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language. Reference: [1]

In this lecture, we will focus on two very important digital building blocks: counters which can either count events or keep time information, and

ECE 4514 Digital Design II. Spring Lecture 15: FSM-based Control

Digital Design with SystemVerilog

High Level Synthesis Using Operation Properties

Part 6: VHDL simulation. Introduction to Modeling and Verification of Digital Systems. Elaboration and simulation. Elaboration and simulation

Spring 2017 EE 3613: Computer Organization Chapter 5: Processor: Datapath & Control - 2 Verilog Tutorial

IT T35 Digital system desigm y - ii /s - iii

Last Lecture. Talked about combinational logic always statements. e.g., module ex2(input logic a, b, c, output logic f); logic t; // internal signal

Lecture #2: Verilog HDL

A Brief Introduction to Verilog Hardware Definition Language (HDL)

Hardware Description Languages (HDLs) Verilog

EN164: Design of Computing Systems Lecture 07: Lab Foundations / Verilog 3

OpenVera Assertions. March Synopsys, Inc.

Introduction. Why Use HDL? Simulation output. Explanation

EECS150 - Digital Design Lecture 20 - Finite State Machines Revisited

FSM and Efficient Synthesizable FSM Design using Verilog

CS Bootcamp Boolean Logic Autumn 2015 A B A B T T T T F F F T F F F F T T T T F T F T T F F F

A Universal Test Pattern Generator for DDR SDRAM *

DE2 Board & Quartus II Software

Sugar 2.0 An Introduction

A SIMULINK-TO-FPGA MULTI-RATE HIERARCHICAL FIR FILTER DESIGN

University of Toronto Faculty of Applied Science and Engineering Edward S. Rogers Sr. Department of Electrical and Computer Engineering

ENEE245 Digital Circuits and Systems Lab Manual

Verilog Essentials Simulation & Synthesis

ECE 2300 Digital Logic & Computer Organization. More Verilog Finite State Machines

Chapter 5 Registers & Counters

The Verilog Language COMS W Prof. Stephen A. Edwards Fall 2002 Columbia University Department of Computer Science

UNIT-III REGISTER TRANSFER LANGUAGE AND DESIGN OF CONTROL UNIT

EECS 270 Verilog Reference: Sequential Logic

The QR code here provides a shortcut to go to the course webpage.

Mealy and Moore examples

Designing Safe Verilog State Machines with Synplify

Transcription:

Assertion Checker Synthesis for FPGA Emulation Chengjie Zang, Qixin Wei and Shinji Kimura Graduate School of Information, Production and Systems, Waseda University, 2-7 Hibikino, Kitakyushu, 808-0135, Japan. zangchengjie@asagi.waseda.jp Abstract In the paper, we propose a method to synthesize SystemVerilog Assertion checkers for FPGA emulation. The main idea is to synthesize assertions based on finite input memory automata (FIMA) and use embedded RAM modules to construct shift register chain for storing the history of variables. The method does not consume logic elements for storing the value and the shift register using the embedded RAM is much more efficient compared with the one uses the registers in logic elements. We also compare the proposed FIMA method with MBAC [1] method and a tool of FoCs [2]. I. Introduction Assertion based verification is a combination of simulation based methods and formal verification methods. Assertions can help designer to detect more bugs in early stages, as well as to understand more about the design during writing assertions. SystemVerilog Assertion [3] is one of such assertion description languages combined with a widely used commercial simulation tool, which can be checked when RTL simulation. FPGA prototyping technology is effective for accelerating simulation based functional verification. However, how to debug using FPGA is a challenge in FPGA prototype-based verification. Some works have been done to synthesize assertion checkers in order to implement them on FPGA for emulation. Formal Checkers (FoCs) [2, 4] transforms PSL/Sugar properties into assertion checkers which can be integrated into simulation environment. The state machine of the FoCs will enter an error state if the assertion fails during simulation. MBAC [1] is another tool which generates assertion checker from PSL/Sugar properties using automata based method. These checkers can help to detect bugs since they can stop the simulation and supply the information to find bugs if the assertion fails. However, many important structures are not supported by these checkers, and more works are necessary for minimizing the resource usage of assertion checkers. In this paper, we proposed a Finite Input Memory Automaton (FIMA) based synthesis method to transform SystemVerilog Assertions into hardware checkers. To save and minimize resource usage of Logic Elements (LE), we construct input memory automata by using embedded RAM modules. II. SystemVerilog Assertion SystemVerilog Assertion (SVA) is a language to describe the behavior of a system. In SVA, a sequence is used to describe a temporal behavior of the system, which is composed of Boolean expressions on signals with delay operators. A property can be constructed with multiple sequences for checking several sequential behaviors at various times. The detailed description of System Verilog Assertion is shown in [3]. In this paper, we mainly discuss the concurrent assertions. This kind of assertions is based on a clock and evaluated at every clock tick. In SystemVerilog Assertion, sequence is used to manipulate sequential behaviors. Linear sequence includes finite Boolean expressions in a linear order of increasing time. The linear sequence is matched if all of the finite Boolean expressions are true in a finite interval of consecutive clock ticks. A single Boolean expression can be considered as a single linear sequence and which is evaluated at each clock tick. Regular expression is used to express more complex sequence, which concisely specifies finite or infinite linear sequence. In this paper, we only discuss assertions with finite linear sequence. Sequences can be concatenated by ##, which specifies a delay between the end of former sequence and the beginning of the next sequence. An integer number or range (named time window) denotes the length of delay. For example, req ##N gnt Specifies that if req is true on the current clock tick, then the signal of gnt shall be true on the Nth clock tick from now. req ##[M:N] gnt Specifies that if req is true on the current clock tick, then the signal of gnt shall be true within the time between the Mth and the Nth(N>M) clock tick from now. Sequences can be connected by some operators such as and, or, intersect, within and throughout,

as well as some kinds repetition operators such as [ ], [=] and [ >]. Property defines the behavior of hardware design and there are several kinds of properties in SystemVerilog Assertion: Sequence, negation, disjunction, conjunction, if...else, implication and instantiation. Detailed description of theses properties can be found in [3]. III. Finite Input-Memory Automaton Based Synthesis In SystemVerilog assertions, ##n denotes temporal delay between sequences. The match of one sequence is determined by the present signal and a limited number of previous signals. So we use finite input-memory automaton to construct assertion checker circuit. Here we introduce the concept of finite sequence machine firstly. According to the definition in [5], a sequential machine M is defined by a finite input alphabet X, a finite output alphabet Z, a finite state set S, a next-state function δ, and an output function λ. M =< S,X,Z,δ,λ >, where s k+1 = δ(s k,x k ), and z k+1 = λ(s k,x k ),s k S, x k X and z k Z, is said to have finite memory µ if µ is the least integer such that the output can be defined as follows: z k = f(x k,x k 1,,x k µ,z k 1,,z k µ ) for k µ. (1) The present state z k is determined by the inputs x of µ time steps including current x k and previous outputs. Finite input-memory machine is a special case of finite sequential machine. A finite sequential machine M has finite input-memory µ i if µ i is the least integer such that z k = f(x k,x k 1,,x k µi ) for k µ i. (2) In finite input-memory machine, the present state z k is determined by inputs x of µ i time steps including current x k. To synthesize a finite input-memory machine, we can use register chain to store the previous values and use output decoder logic to produce the output, as shown in Fig. 1. For transforming a sequence checker, one finite input-memory machine is designed for one variable. Thus for sequence with N variables, we need N finite inputmemory machines to construct the checker circuit. Output logic of these input-memory machines produce the output of sequence circuit. Next we will show the synthesis method from sequence layer and property layer respectively. A. Synthesis Method for Sequence In this method, we use shift registers to trace the history of variables. That means, one shift-register chain is similar to one history-list. In theory, for a history-list with depth N, N registers are needed to configure the Fig. 1. A finite input-memory machine. shift-register with N taps. There is one clock delay between neighbor values, so for the shift-register with depth N, we should be able to simultaneously read N values. Here is an example of linear sequence: sequence s1: a ##1 b ##2 c ##1 d; The Boolean expression a will be checked on each clock tick. The sequence s1 evaluates to true if a evaluates to true in current clock, b, c and d evaluate to true after one, three and four clocks respectively. We can not refer the future value, so we should only refer the past signals. For this example, d is the latest, so we consider the time based on d. To transform s1, we need to use a shift-register with depth 4 to record history of a, use a shift-register with depth 3 to record history of b, and use a shiftregister with depth 1 to record history of c. The introduction of the synthesis method starts from the linear sequence, which is the simplest sequential behavior. The following parts show how to transform a linear sequence into a hardware checker. The inputs of a hardware checker are variables in a linear sequence and a clock signal, and the output is the evaluation result of the sequence. Firstly, we construct data structure of each input variable, Input(i)={P(i), Delay(i), Depth(i)}. The next three steps present the meaning of P(i), Delay(i) and Depth(i), and show how to initialize and calculate these three parameters of each input variable. The sequence s1 is used as an example. Step 1: P(i) denotes the position of each variable Input(i) in the sequence. The rightmost variable has position of 0. For example, in sequence s1, the position of {a,b,c,d} is {3,2,1,0}. Step 2: Delay(i) denotes the delay from its left neighbor variable in the sequence. The leftmost variable has delay of 0; For example, in sequence s1, the delay of {a,b,c,d} is {0,1,2,1}. Step 3:

Fig. 3. Repetition operation example. Fig. 2. Algorithm-1: linear-sequence synthesis. Depth(i) denotes the delay before the rightmost input variable coming. For example, in sequence s1, the depth of {a,b,c,d} is {4,3,1,0}. Using the above three steps, we get the depth of each input variable. Based on the Depth(i) of each variable Input(i), we generate a shift-register chain with depth Depth(i) to trace its history. Fig. 2 shows the detailed algorithm of transforming linear sequence into a hardware checker. In this algorithm, the input variables are sorted according their positions firstly, and then the depth of each variable is calculated. The depth of each input variable denotes the number of registers in a shift-register chain. The algorithm-1 is for simple linear sequence. More complex sequences might include regular expressions and sequence operators to connect two or more sequences. Complex sequence with regular expressions or operators can be decomposed to multiple simple linear sequences, then algorithm-1 is applied to transform these linear sequences. Next we will show how to decompose complex sequence with time window, repeaters and sequence operations. Moreover, in finite input memory automaton, since we use finite number of registers to configure shiftregister chain, this kind of method can not transform operations with unbounded time window, such as operations of THROUGHOUT and WITHIN. Before starting to manipulate sequence operators, we introduce the concept of length of sequence, which is defined as the minimum clock cycles to generate the match result of linear sequences. For a sequence s, s denotes the length of s. For example, the length of sequence s1 is 4. The following parts show how to transform operations respectively. 1) Repetition Operation: There are three kinds of repetitions: consecutive repetition([ ), goto repetition([ >) and non-consecutive repetition([=). In which goto repetition and non-consecutive repetition will be extend to a finite, but unbounded time windows. The proposed method can not transform operations with unbounded time window. Consecutive repetition specifies that the operand sequence must match many successive times. Here are the example of s2 and s3. sequence s2: a[*3] ##1 b means a ##1 a ##1 a ##1 b. sequence s3: a[*0:3] ##1 b means b or (a ##1 b) or (a ##1 a ##1 b) or (a ##1 a ##1 a ##1 b) Fig. 3(a) shows the input-memory machine based hardware circuit for sequence s2, where the least number of integer of input-memory µ i is 3, and the output is z k = f(a k,a k 1,a k 2,a k 3 ) for k 3. = a k 1 && a k 2 && a k 3. (3) Note that for multiple input-memory machines, we can share a shift-register chain and design output-decoder for different operations. For example, sequence s3 is decomposed into three subsequences. The variable a of the first three subsequences can share shift registers from the fourth subsequence. Fig. 3(b) shows the register chain sharing by multiple subsequences. 2)OR Operation: OR operation is used to construct a sequence by some operand sequences, in which at least one of these operand sequences evaluates to true, the sequence evaluates to true. The end time of sequence is the same time when a match of these operand sequences. N operand sequences connected by OR operation is similar to N independent threads. Sequence might be matched at different end times. To transform this kind of sequence, N operand sequences are transformed separately. 3) First match Operation: For sequence with time window, multiple sequences should be checked in each clock tick. First match operator matches when the first one of these multiple sequences becomes true. Its end time is

Fig. 4. First match operation synthesis. the same as the earliest match sequence. If the earliest sequence is evaluated to true, the subsequence matches should be discarded from consideration. Here is an example of first match operation. sequence s4: first match(a ## [2:4] b) Each attempt of sequence s4 can result in one of the following three sequences: a ##2 b, a ##3 b and a ##4 b. The sequence s4 is evaluated to true when one of the above three sequences ends firstly. To transform the first match operation, if it has time window, we firstly transform the time window into OR of N operand sequences. All of the results of earlier decided should be used for discarding the subsequent sequences. We can not synthesize the first match operation by input-memory machine since its output-decoder includes sequential logic. Thus the operation of first match is treated as a special case. The algorithm of transforming first match operation is shown in Fig. 4. An example of sequence s4 is shown in Fig. 5. 4) AND Operation: AND operation denotes both operand sequences are expected to match. The operand sequences start at the same clock tick, but might match at different times. The end time of the composite sequence is the end time of the sequence which matches at last. To transform AND operation, by parsing both operand sequence t1 and t2 using algorithm-1 respectively, we get the lengths t1 = M and t2 = N, assume N>M. The length of t1 AND t2 is t1 AND t2 = max{ t1, t2 } = N. By using input-memory based method, we get the outputs of t1 and t2 firstly, and then N-M registers are used to delay the result of short sequence. The 2-input AND gate is used to produce the final output. For sequence with time window, firstly transform time window to OR operation, and then transform each AND operation respectively. 5) INTERSECT Operation: INTERSECT operation is similar to the AND operation with length restriction. In which both operand sequences must match, as well as the lengths of the two matches of sequences must be equal. Only the two operand sequences have the same length, the composite sequence has possibility to evaluate to true. Fig. 5. First match operation example. To transform INSTERSECT operation, firstly, operand sequences are transformed by using algorithm-1 respectively. Then the results of two operand sequences is produced by the 2-input AND gate directly. B. Synthesis Method for Property A property defines the behavior of hardware design and there are seven kinds of properties in SystemVerilog Assertions: Sequence, negation, disjunction, conjunction, if...else, implication and instantiation. To transform property, we firstly decompose it into some independent properties. Each independent property is constructed separately and then the synthesis result is generated according property operators. Operators of negation, disjunction and conjunction are similar to operators of NOT, OR and AND respectively in sequence layer. Disjunction operator is used for a disjunction property, in which at least one of the property evaluates to true, the disjunction property evaluates to true. Conjunction operator is used for a conjunction property, in which only if all of the properties evaluate to true, the conjunction property evaluates to true. Next we discuss implication operator in detail. SVA supplies the implication operator, which is similar to if-else structure. The left hand side (LHS) of the implication is called antecedent and the right hand side (RHS) is named consequent. In each clock, if the antecedent succeeds, then the consequent is evaluated. Otherwise the property is assumed to be vacuous success. There are two kinds of implications, overlapped implication and non-overlapped implication. 1) Overlapped implication property P overlapped; @(posedge clk) S1 > S2; endproperty If sequence S1 evaluates to true on a given positive clock edge, then the sequence S2 should match on the same positive clock edge.

Fig. 6. Implication example. Fig. 8. Construct shift-register by RAM modules. Fig. 7. Implication example with time window. 2) Non-overlapped implication property P non-overlapped; @(posedge clk) S1 => S2; endproperty If sequence S1 evaluate to true on a given positive clock edge, then the sequence S2 should match on the next positive clock edge. To transform implication operation, before using algorithm-1, we firstly transform implication operation to linear sequences. For overlapped implication, the last Boolean expression of LHS and the first Boolean expression of RHS should both be true at the same clock cycle. For example, an overlapped property: a ##1 b ##1 c > d ##1 e;, can be expressed as a ##1 b ##1 c ##0 d ##1 e;. For non-overlapped implication, it can be transformed to a sequence LHS ##1 RHS;. Assuming the lengths of sequences in LHS and RHS are S LHS = M and S RHS = N, the length of a sequence for overlapped is S LHS >S RHS = M + N and the length of nonoverlapped implication is S LHS => S RHS = M +N +1. We use the algorithm-1 to transform LHS and RHS sequences. The output of implication operation is produced by combinational logic, as block 3 in Fig. 6. Here we use an non-overlapped implication example to show how to synthesize the property to an input memory automaton based circuit. property implication p1; @(posedge clk) a ##1 b ##1 c => d ##1 e; endproperty In this property, on each positive clock edge, LHS sequence will be checked. If the sequence of LHS is true, then at next positive clock edge, the sequence of RHS will be evaluated. Otherwise the simulator will give a result of vacuous success. If the sequence of RHS is also true, the simulator will give a result of real success, otherwise it will return fail. Fig. 9. Timing report of shift-register(by RAM modules). The implication assertion can be transformed to three parts in circuit, LHS, RHS and implication operator. Sequences of LHS and RHS are transformed by the inputmemory automaton based method. These three parts are corresponding to Block 1, Block 2 and Block 3 in Fig 6. For the sequence with time window, the time window can be explained as logic OR of operand sequence threads in parallel, as shown in Fig. 7, which is an implication example with time window. IV. Flip-flop Usage Reduction FIMA based method takes registers to record the history of Boolean expressions in sequences. For mapping a hardware design on FPGA, assertion checkers take resources. Complex hardware design takes large amount of resources in FPGA. When the usage of FPGA is about 70 80 percent, the wire routing resource becomes sensitive to design. Assertion for verification is expected not to influence the implementation of the design, but checkers take wire routing resource when mapping. To release the burden on FPGA resource, we construct input memory automata using embedded RAM modules. Fig. 8 shows how to construct shift register by embedded RAMs. We use the RAM module with two read/write ports and each RAM stores two 1-bit data. For one RAM module, by setting the wren as 1 and connecting output-1 to input-2, we get a 1-bit shift-register with depth of 2. There are 2 taps in each RAM and we can construct a shift-register with more taps by connecting multiple RAM modules. Fig. 8 shows a shift-register with 4 taps which is constructed by two RAM modules and Fig. 9 shows the timing report of RAM based shift-register with 4 taps. For combinational logic parts in hardware checkers, we also use RAM modules to implement them by storing the truth table in the memory. By initializing the value of a RAM module, we can implement a gate logic. For example, to implement the Block 3 of Fig. 6, we use one port

TABLE II Comparisons of different methods. FIMA Based Method Assertions MBAC [1] FoCs [2] LE Based Shift-Reg. RAM Based Shift-Reg. FF LUT MHz FF LUT MHz FF LUT MHz Mem Bits MHz a1 4 4 422.12 37 47 170.07 10 2 422.12 28 189.32 a2 6 7 422.12 37 48 162.92 7 3 422.12 32 190.22 a3 12 14 422.12 41 56 173.31 19 3 422.12 54 186.39 a4 4 4 422.12 36 47 168.63 5 3 422.12 30 195.12 a5 6 3 422.12 N.S. 6 3 422.12 30 157.38 a6 48 41 422.12 59 51 161.16 51 9 422.12 136 172.83 AS7 6 16 422.12 68 90 173.94 12 13 422.12 134 157.88 TABLE I Benchmark assertions. assertion: assert property (P );, where P is a1: @(posedge clk) a ##1 b##1 c => d ##1 e a2: @(posedge clk) a => d[*1:3] ##1 e a3: @(posedge clk) a ##1 b => d[*2:4] ##1 e ##1 c a4: @(posedge clk) a => b[*0:2] ##1 c a5: @(posedge clk) first match(a ##[2:4] b) a6: @(posedge clk) a => b[*25] ##1 c AS7: Arbiter, Chart 2 [6](4 assertions) RAM with four 1-bit data. By initializing the values of address 0, 1 and 3 to be 1 and address 2 to be 0, we can get the combinational circuit of Block 3. V. Experimental Results To evaluate FIMA based method, we compare the synthesis results generated by three methods, FIMA based method, MBAC [1] method and a tool of FoCs [2]. The assertions used in FoCs are written in the PSL/Sugar specification language, while our tool is based on SystemVerilog. To do the comparison, we describe the same assertion by PSL language and SystemVerilog Assertion language respectively and then generate hardware checkers by these three methods. The benchmark assertions are shown in Table I, a1 a6 are written by ourself and AS7 (including 4 assertions) is selected from [6]. For hardware emulation, we use Altera EP1S80F1508C6 FPGA to map the assertion checkers. The VerilogHDL assertion modules are synthesized by Quartus II 7.2. Table II shows the mapping result by using different transformation methods. Some properties are not supported by FoCs tool, such as first match. N.S. is used to denote the properties which are not supported by tool. We check the proposed method by two ways, LE based shift-register and RAM based shift-regtser. From table II, MBAC method takes smaller number of FFs and larger number of LUTs than the proposed FIMA(LE) method. Compared with MBAC, in FIMA(LE) method, we can reduce the number of LUTs by increasing the number of FFs. FoCs tool seems to generate much larger circuit compared with method of FIMA(LE) and MBAC. In FIMA(RAM), embedded RAM modules are used to construct shift-registers, as well as to implement combinational logic. From Table II, constructing shift register chain by RAM modules does not use FF, and assertion checkers work at 150 200 MHz. VI. Summary and Conclusions In this paper, we propose a finite input-memory automaton based assertion checker synthesis method to transform SystemVerilog Assertions into hardware checkers for FPGA prototyping. To save logic elements, the delay chain of finite input memory is constructed by embedded RAM modules. We compare the proposed FIMA method with MBAC method and a tool of FoCs. The results show that proposed FIMA(LE) use more FF and less LUTs compared with MBAC. By using embedded RAM module, the proposed FIMA(RAM) method transforms assertions without using logic elements. Acknowledgements This research was supported in part by Ambient SoC Global COE Program of Waseda University of the Ministry of Education, Culture, Sports, Science and Technology, Japan. References [1] M. Boule and Z. Zilic., Incorporating efficient assertion checkers into hardware emulation, Proc. International Conference on Computer Design, pp.221-228, 2005. [2] Y. Abarbanel, I. Beer, L. Glushovsky, S. Keidar, and Y. Wolfsthal, FoCs: Automatic Generation of Simulation Checkers from Formal Specifications, Proc. Computer Aided Verification, pp.538-542, 2000. [3] SystemVerilog 3.1 Language Reference Manual, ver. 3.1. http://www.eda.org/sv/systemverilog 3.1 final.pdf. [4] IBM AlphaWorks. FoCs Property Checkers Generator ver. 2.02. www.alphaworks.ibm.com/tech/focs, 2005. [5] Y. Kambayashi, S. Yajima, and I. Ohbayashi, On finitememory sequential machines, IEEE Trans. Computers (Short Notes), vol. C-19, pp.254-258, March 1970. [6] V. Srikanth and R. Meyyappan, A Practical Guide for SystemVerilog Assertions, Morgan Kaufmann Publishers, 2005.