SystemVerilog Lecture 3. Prof. Gerald E. Sobelman Dept. of Electrical and Computer Engineering University of Minnesota Minneapolis, MN USA

Size: px
Start display at page:

Download "SystemVerilog Lecture 3. Prof. Gerald E. Sobelman Dept. of Electrical and Computer Engineering University of Minnesota Minneapolis, MN USA"

Transcription

1 SystemVerilog Lecture 3 Prof. Gerald E. Sobelman Dept. of Electrical and Computer Engineering University of Minnesota Minneapolis, MN USA 1

2 Outline Design Example: Booth Multiplier Design Example: 4-point DFT Functions and Tasks: General Issues Module Prototypes Named Port Connections Net Aliases Introduction to Interfaces 2

3 Booth Encoding Booth encoding techniques are used to reduce the number of terms that must be added. Various forms of Booth encoding techniques have been proposed. As an illustration, we will focus on one variation (usually called modified Booth encoding) that reduces the number of partial products that must be added by a factor of two. The method is valid for signed operands and results. We assume that the number of bits, n, in the multiplier operand Y is an even number. 3

4 Booth Encoding Cont. First, consider those cases where Y > 0. Since the bit y n-1 = 0, we can write: Y = n 1 y k k = 0 Each term in the summation can be written as: yk k 1 k 2 2yk yk yk k yk k = ( ) = Use the above expansion for the odd-k terms in the summation for Y to obtain: n n 2 n 2 n 2 n 1 n 1 n 2 n Y= ( y 2 2y 2 ) + y 2 + ( y 2 2y 2 ) + y 2 + L + ( y 2 2y 2 ) + y 2 + ( y 2 2y 2 ) + y 2 2 k n 3 n 4 n 4 n 4 4

5 Booth Encoding Cont. Defining y -1 = 0 and collecting together terms having the same power of two gives: n n 2 n 1 n 1 n 2 n Y= y 2 + ( 2y + y + y ) 2 + ( 2y + y + y ) 2 + L + ( 2y + y + y ) 2 + ( 2y + y + y ) 2 n 3 n 4 n 5 The first term drops out since y n-1 = 0. Define a new set of coefficients z k for k = even #: zk 2yk+ 1+ yk + yk 1, for k = 0, 2, 4, L, n 2 Then, we can re-write the expressions for Y and P in terms of z k as follows: n Y = z 2, P = X Y = ( z X ) 2 k = 2 0 k k 0 n k = 2 0 k n 4 k 5

6 Booth Encoding Cont. Notice what this says: We now have to generate and sum only n/2 partial products z k X instead of the original n partial products y k X. This represents a considerable savings in the required hardware. The only mitigating factor is that each partial product is slightly more complex to generate. Since each z k depends on the values of 3 adjacent multiplier bits (y k+1, y k and y k-1 ), there are 8 possible cases to consider. The corresponding value of z k in each of the 8 cases is shown in the table on the following page. Thus, we will have to be able to generate the following partial products: 0, X, -X, 2X and -2X. We can obtain these easily by generating the two s complement and shifting left by one bit position position. 6

7 Booth Encoding Cont. Using the equation for z k, we obtain the following table of the 8 possible cases: y k+1 y k y k-1 z k = -2y k+1 + y k + y k

8 8x8 Signed Booth Multiplier It can be shown that the previous result also holds for the case where the Y operand is negative. For an 8x8 multiplier design, we will generate 4 partial products (call them a, b, c and d): Negative partial products X, -2X can be implemented as a one's complement plus 1 to the LSB position. Multiplication by 2 (for 2X, -2X) can be implemented as a shift left by one bit position. The partial products have to be sign-extended to 16 bits, which creates a large number of additional bits. It is possible to separately sum the duplicated bits and replace the original array of terms with a simplified array of terms. 8

9 Multiplier Code (cont. on next 2 pages) // behavioral model for a Booth-encoded 8x8 signed multiplier // 16-bit output => interpreted as a 16-bit signed number // simplified array structure after sign-extension terms combined module booth16(input logic signed [7:0] x, y, output logic signed [15:0] p); logic [8:0] a, b, c, d; logic u0, u1, u2, u3; wire [15:0] pp0, pp1, pp2, pp3, pp4; // perform the booth encoding always_comb begin case (y[1:0]) 2'b00 : begin a = 9'b ; u0 = 0; end // 0 2'b01 : begin a = {x[7], x[7:0]}; u0 = 0; end // 1 2'b10 : begin a = {~x[7:0], 1'b1}; u0 = 1; end // -2 2'b11 : begin a = {~x[7], ~x[7:0]}; u0 = 1; end // -1 endcase 9

10 case (y[3:1]) 3'b000 : begin b = 9'b ; u1 = 0; end // 0 3'b001 : begin b = {x[7], x[7:0]}; u1 = 0; end // 1 3'b010 : begin b = {x[7], x[7:0]}; u1 = 0; end // 1 3'b011 : begin b = {x[7:0], 1'b0}; u1 = 0; end // 2 3'b100 : begin b = {~x[7:0], 1'b1}; u1 = 1; end // -2 3'b101 : begin b = {~x[7], ~x[7:0]}; u1 = 1; end // -1 3'b110 : begin b = {~x[7], ~x[7:0]}; u1 = 1; end // -1 3'b111 : begin b = 9'b ; u1 = 0; end // 0 endcase case (y[5:3]) 3'b000 : begin c = 9'b ; u2 = 0; end // 0 3'b001 : begin c = {x[7], x[7:0]}; u2 = 0; end // 1 3'b010 : begin c = {x[7], x[7:0]}; u2 = 0; end // 1 3'b011 : begin c = {x[7:0], 1'b0}; u2 = 0; end // 2 3'b100 : begin c = {~x[7:0], 1'b1}; u2 = 1; end // -2 3'b101 : begin c = {~x[7], ~x[7:0]}; u2 = 1; end // -1 3'b110 : begin c = {~x[7], ~x[7:0]}; u2 = 1; end // -1 3'b111 : begin c = 9'b ; u2 = 0; end // 0 endcase 10

11 case (y[7:5]) 3'b000 : begin d = 9'b ; u3 = 0; end // 0 3'b001 : begin d = {x[7], x[7:0]}; u3 = 0; end // 1 3'b010 : begin d = {x[7], x[7:0]}; u3 = 0; end // 1 3'b011 : begin d = {x[7:0], 1'b0}; u3 = 0; end // 2 3'b100 : begin d = {~x[7:0], 1'b1}; u3 = 1; end // -2 3'b101 : begin d = {~x[7], ~x[7:0]}; u3 = 1; end // -1 3'b110 : begin d = {~x[7], ~x[7:0]}; u3 = 1; end // -1 3'b111 : begin d = 9'b ; u3 = 0; end // 0 endcase end // form the partial product terms assign pp0 = {7'b , ~a[8], a[7:0]}; assign pp1 = {5'b00000, ~b[8], b[7:0], 2'b00}; assign pp2 = {3'b000, ~c[8], c[7:0], 4'b0000}; assign pp3 = {1'b0, ~d[8], d[7:0], 6'b000000}; assign pp4 = {1'b1, 1'b0, 1'b1, 1'b0, 1'b1, 1'b0, 2'b11, 1'b0, u3, 1'b0, u2, 1'b0, u1, 1'b0, u0}; // add up the partial product terms assign p = pp0 + pp1 + pp2 + pp3 + pp4; endmodule 11

12 Exhaustive Testbench (cont. on next page) module tb16; // testbench for the 8-bit by 8-bit Booth multiplier // exhaustive checking of all 256*256 possible cases logic signed [7:0] x, y; // 8-bit inputs logic signed [15:0] p; // 16-bit output of the multiplier circuit int check; // value used to check correctness int num_correct = 0; // counter to keep track of number correct int num_wrong = 0; // counter to keep track of number wrong // instantiate the 8-bit by 8-bit Booth-encoded signed multiplier booth16 mult_instance(x, y, p); 12

13 // exhaustive simulation of all 256*256 = 65,536 possible cases initial begin // loop through all possible cases and record the results for (int i = 0; i < 256; i++) begin x = i; for (int j = 0; j < 256; j++) begin y = j; check = x*y; // compute and check the product #10 if (p == check) num_correct += 1; else num_wrong += 1; end end // following line is commented out, but is useful for debugging // $display("%d * %d = %d (%d)", x, y, p, check); // print the final counter values $display("num_correct = %d, num_wrong = %d", num_correct, num_wrong); end endmodule 13

14 Output Produced by the Testbench num_correct = 65536, num_wrong = 0 If the debug statement is not commented out, then a portion of the output produced by that $display statement is as follows: * 100 = ( -5600) -56 * 101 = ( -5656) -56 * 102 = ( -5712) -56 * 103 = ( -5768) -56 * 104 = ( -5824) -56 * 105 = ( -5880) -55 * 100 = ( -5500) -55 * 101 = ( -5555)... 14

15 A Complex Data Type and Add Function We can use structures to conveniently represent complex numbers: // complex data type typedef struct { int r, i; // real and imaginary parts } complex; // complex adder function function complex ComplexAdd (input complex x, y); ComplexAdd.r = x.r + y.r; ComplexAdd.i = x.i + y.i; endfunction 15

16 Complex Subtract and Multiply Functions // complex subtractor function function complex ComplexSub (input complex x, y); ComplexSub.r = x.r - y.r; ComplexSub.i = x.i - y.i; endfunction // complex multiplier function function complex ComplexMul (input complex x, y); ComplexMul.r = (x.r * y.r) - (x.i * y.i); ComplexMul.i = (x.r * y.i) + (x.i * y.r); endfunction 16

17 4-point Discrete Fourier Transform (DFT) The 4-point DFT is defined as: for k = 0, 1, 2, 3, and where W is given by: The W kn are called "twiddle factors" and we can compute the first few of them as follows: W 0 = 1, W 1 = -j, W 2 = -1, W 3 = j 17 = = 3 0 ) ( ] [ n kn W n x k X j e e W j j = = = 2 / 4 2 π π

18 4-point DFT Module // 4-point Discrete Fourier Transform module dft4 (input complex x[4], output complex X[4]); complex W[4] = '{'{1, 0}, '{0, -1}, '{-1, 0}, '{0, 1}}; complex twiddle; always_comb for (int k = 0; k < 4; k++) begin X[k] = '{0, 0}; twiddle = '{1, 0}; for (int n = 0; n < 4; n++) begin X[k] = ComplexAdd(X[k], ComplexMul(x[n], twiddle)); twiddle = ComplexMul(twiddle, W[k]); end end endmodule 18

19 A Simple Testbench module tb1dft4; // simple 4-point DFT testbench complex x[4], X[4]; // inputs and outputs // instantiate the 4-point dft module dft4 instance1(x, X); initial begin // assign input values x = '{'{1, 2}, '{3, 4}, '{5, 6}, '{7, 8}}; // compute and the DFT results #10 $display("x[0] = %d + %d j", X[0].r, X[0].i); $display("x[1] = %d + %d j", X[1].r, X[1].i); $display("x[2] = %d + %d j", X[2].r, X[2].i); $display("x[3] = %d + %d j", X[3].r, X[3].i); end endmodule 19

20 Testbench Output and Matlab Check The output from the testbench is: X[0] = j X[1] = j X[2] = j X[3] = j A check using Matlab gives the same results: >> x = [1+2j, 3+4j, 5+6j, 7+8j] x = i i i i >> X=fft(x) X = i i i 20

21 Functions and Tasks: General Issues A function cannot consume time, i.e.: It cannot have any delay statements It cannot have any event-control statements. A function cannot call a task. Void functions can be called from any function or task. They are useful for implementing debug routines containing $display statements. begin... end is not needed in either functions or tasks. 21

22 Functions & Tasks: General Issues Cont. The default direction for arguments is input. The default type for arguments is logic. task my_task(x, y, z, output int a, b, c); In the above example, x, y and z are input logic, while a, b and c are output int. 22

23 Functions & Tasks: General Issues Cont. In order to improve the readability of large designs, it is possible to include the name of the function or task in the endfunction or endtask statement. For example: function my_function(a, b)... endfunction : my_function task my_task(x, y, z, output int a, b, c);... endtask : mytask 23

24 Module Prototypes: extern module A module prototype is a way of specifying the module name and its inputs and outputs without specifying the behavior or structure of the module: extern module adder(a, b, s, cout); An alternate way of writing it is: extern module adder( input logic [31:0] a, b, output logic [31:0] s, output logic cout); 24

25 Application of Module Prototypes A commonly used Verilog design organization technique is to place each module into a separate file. (Also, the name of the file is usually chosen to be the same as the name of the module it contains.) However, this makes it more difficult to compile designs when a module instantiates other modules, since more than one file must be compiled as a group. Using module prototypes simplifies the compilation process: If a module A instantiates module B, then file A.sv containing module A can also contain the module prototype for module B. Then, the file A.sv can be compiled separately. 25

26 Visibility of Module Prototypes There are two possible locations in a file that a module prototype statement may be placed: If the extern module statement is placed outside of any other module, then it will be visible by any other module. If the extern module statement is placed within some module, then it is visible within the scope of that module. 26

27 Use of the.* with Module Prototypes When we use a module prototype, it seems like we have to list the module arguments twice: once in the module prototype statement again when we define the actual module itself This redundancy (and possible source of errors if the argument lists do not match exactly) can be avoided by using the.* feature: List the arguments explicitly in the module prototype. Use.* as the argument of the module itself. In this case, the compiler will automatically use the arguments specified in the module prototype. 27

28 Example of Using.* Suppose we have a module prototype statement: extern module adder( input logic [31:0] a, b, output logic [31:0] s, output logic cout); Then the adder module can be defined as: module adder(.*); always_comb assign {cout, s} = a + b; endmodule 28

29 Modules Defined Within Other Modules Usually, all modules in a design are global, i.e. they are visible to the entire design. Alternatively, it is possible to use nested modules, i.e. defining one module inside of another module. In this case, the nested module is only visible within the scope of the parent (i.e., the enclosing) module. This helps to reduce accidental "name collisions" in a large design, especially a design that is created by a team of people or one which uses Intellectual Property (IP) from a third party. 29

30 Named Port Connections with.name When a module is instantiated within another module, we must specify the connections between the port names and the signal names connected to those ports. While positional association can be used (i.e., listing the signals in the same order as they were declared in the module definition), it is not good for large designs since errors can be created inadvertently. Therefore, named association is the preferred method for large designs. Can use either the.name or the.* syntax. 30

31 Named Port Connections Using.name If the name of the port is the same as the name of the signal, then it can just be listed once using the.name format: adder a1(.a,.b,.s,.cout); If the name of the port is different than the name of the signal being connected to it, then both names must be used at that port: adder a1(.a(in1),.b(in2),.s,.cout); Here, the port and signal names for s and cout are the same, while the signal names in1, in2 used at the a, b input ports are not the same. 31

32 Implicit Port Connections Using.* If the names of the ports and the signals all match, then it is not necessary to even list them: adder a1 (.* ); When.* is used, all ports and signals having the same name will be automatically connected to each other. You can also put in some explicit named associations for some of the ports when those names are different: adder a1(.a(in1),.b(in2),.*); 32

33 Net Aliases Using alias Sometimes it is convenient to have more than one name for the same net in a design. This can be done using an alias statement. For example: alias clock = CLOCK = clk = CLK; This simply means that all four names refer to the same net. They can all be used interchangeably in a design. Note: Only net data types (i.e., typically the wire type) can be used in an alias statement. 33

34 Module Ports: input, output, inout Any data type can be used in module ports: Packed or unpacked arrays, structures and unions can all be used at ports. The formats of unpacked data types must be the same on both sides of the port, i.e.: Arrays must be of the same dimensions and element sizes. Structures and unions must use the same type definition. The default port direction is inout. The default data type is wire. 34

35 Module Reference Ports: ref In SystemVerilog, ports may also be of another type known as reference ports using the keyword ref. This is like "call by reference" in C/C++. The port passes a reference to a quantity, rather than the quantity itself. In other words, the port name acts like an alias to the quantity. This is done by declaring the port to be of type ref. Note that ports of type ref are not synthesizable. 35

36 Declaring Variables to Be Local It is possible to declare variables to be local to a begin/end or fork/join block. The block may be either named or unnamed. If the block is named, then it is possible to refer to the variable using a hierarchical name notation (i.e., using the dot notation). If the block is unnamed, then it is not possible to refer to the variable using a hierarchical notation. 36

37 Example: Local Variable in a Named Block A variable k which is local to a block named block1: module ex1;... begin : block1 int k;... end : block1 // optional block name used... endmodule : ex1 // optional module name used Another module (typically a testbench) can then refer to this variable using the hierarchical name: ex1.block1.k 37

38 Ex: Local Variable in an Unnamed Block A variable k which is local to an unnamed block: module ex2;... begin int k;... end... endmodule : ex2 // optional module name used Here, it is not possible for another module to refer to the local variable k. 38

39 Interfaces An interface groups several signals together into a single unit. This is then treated as a single port of type interface. All of the information about these signals is specified in one place (the interface declaration) and then any number of modules can use that information. This information is declared only once, rather than having to be declared multiple times, i.e. once in each module. 39

40 Simple Interface: A Bundle of Wires We can simply bundle a set of wires together and give it a name. For example: interface bus; logic [15:0] address, data; logic read, write; endinterface The name of this interface is called bus. It bundles together 16-bit address and data signals, and a read and a write signal. We can now create instances of this interface: bus bus1; // bus1 is the unique instance name 40

41 Using the Interface To access individual signals within the interface, use the "dot" notation, e.g.: bus1.address bus1.data bus1.read bus1.write An interface can be used to connect modules together. To do this, those modules would declare a port to be an interface of that type, e.g.: module fft (bus fft_bus); This declares a port of type bus called fft_bus. 41

42 Including Ports in an Interface The previous example was a "port-less" interface. It is also possible to add ports to an interface. These ports may be of type input, output or inout. This allows those port signals to be shared with other interfaces. A common situation is to include a clock signal as an input port in an interface: interface newbus (input clock); logic [15:0] address, data; logic read, write; endinterface 42

43 Generalizing Interfaces with Parameters Use the #(parameter... ) construction to provide flexibility and generality to an interface. In the interface declaration, this is placed after the name of the interface and before the port list. In the body of the interface declaration, the parameter value can be used with procedural statements to initialize values or to provide some desired behavior. When creating an instance of that interface, include the # symbol with a specific value that you want the parameter to have for that instance. 43

44 Using the Interface To use the interface within a module: Create an instance of the interface. Create an instance of each module which connects to that interface. Can use the.* notation to simplify the port connections. Example code within a module which connects two processors (gp1 and fp1) to a bus (bus1): my_bus bus1 (.* ); gen_purp_proc gp1 (.* ); fft_proc fp1 (.* ); 44

45 Global vs. Local Interfaces A global interface: To make the interface visible to any module in the design, place the interface definition outside of any module. A local interface: To restrict the interface to be local to a given module, place the interface definition inside that module. 45

46 Named vs. Generic Interface Ports There are two ways of using interface ports: Named: In the port list of the module, give both the name of the interface and the name of the port. An example where the interface name is bus and the port name is bus_a is: module example_named(bus bus_a); Generic: In the port list of the module, use the keyword interface followed by the name of the port: module example_generic(interface bus_a); The generic type is more flexible since any type of interface can be connected when the module is instantiated. 46

47 Restricting Access using modport We can provide direction information to signals in the interface using the modport statement. The direction is the one seen from inside the module. The same signal may appear in more than one modport statement, with different directions. interface two_way; wire w, x, y, z; modport block_a (input w, x, output y, z); modport block_b (input y, z, output w, x); endinterface 47

48 References IEEE Standard for SystemVerilog Unified Hardware Design, Specification, and Verification Language, IEEE, IEEE Std 1800 TM -2005, 22 November S. Sutherland, S. Davidmann and P. Flake, SystemVerilog for Design, Kluwer Academic Publishers, C. Spear, SystemVerilog for Verification, Springer, SystemVerilog Tutorials, Doulos Ltd., SystemVerilog Tutorial, electrosofts.com, 48

SystemVerilog Essentials Simulation & Synthesis

SystemVerilog Essentials Simulation & Synthesis SystemVerilog Essentials Simulation & Synthesis Course Description This course provides all necessary theoretical and practical know-how to design programmable logic devices using SystemVerilog standard

More information

SystemVerilog For Design Second Edition

SystemVerilog For Design Second Edition SystemVerilog For Design Second Edition A Guide to Using SystemVerilog for Hardware Design and Modeling by Stuart Sutherland Simon Davidmann Peter Flake Foreword by Phil Moorby 4y Spri ringer Table of

More information

Last Lecture: Adder Examples

Last Lecture: Adder Examples Last Lecture: Adder Examples module fulladder(input logic a, b, cin, output logic s, cout); logic p, g; // internal nodes assign p = a ^ b; assign g = a & b; assign s = p ^ cin; assign cout = g (p & cin);

More information

Introduction to Digital VLSI Design מבוא לתכנון VLSI ספרתי

Introduction to Digital VLSI Design מבוא לתכנון VLSI ספרתי Design מבוא לתכנון VLSI ספרתי Verilog Tasks & Functions Lecturer: Semester B, EE Dept. BGU. Freescale Semiconductors Israel 1 Objectives Describe the differences between tasks and functions Identify the

More information

Extending SystemVerilog Data Types to Nets

Extending SystemVerilog Data Types to Nets Extending SystemVerilog Data Types to Nets SystemVerilog extended Verilog by adding powerful new data types and operators that can be used to declare and manipulate parameters and variables. Extensions

More information

Introduction to Verilog

Introduction to Verilog Introduction to Verilog Synthesis and HDLs Verilog: The Module Continuous (Dataflow) Assignment Gate Level Description Procedural Assignment with always Verilog Registers Mix-and-Match Assignments The

More information

SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For

SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For February 24-26, 2003 SystemVerilog 3.1: It s What The DAVEs In Your Company Asked For Stuart HDL, Inc. www.sutherland-hdl.com 2/27/2003 1 This presentation will Define what is SystemVerilog Provide an

More information

In this lecture, we will go beyond the basic Verilog syntax and examine how flipflops and other clocked circuits are specified.

In this lecture, we will go beyond the basic Verilog syntax and examine how flipflops and other clocked circuits are specified. 1 In this lecture, we will go beyond the basic Verilog syntax and examine how flipflops and other clocked circuits are specified. I will also introduce the idea of a testbench as part of a design specification.

More information

Course Topics - Outline

Course Topics - Outline Course Topics - Outline Lecture 1 - Introduction Lecture 2 - Lexical conventions Lecture 3 - Data types Lecture 4 - Operators Lecture 5 - Behavioral modeling A Lecture 6 Behavioral modeling B Lecture 7

More information

קורס SystemVerilog Essentials Simulation & Synthesis.. SystemVerilog

קורס SystemVerilog Essentials Simulation & Synthesis.. SystemVerilog קורס SystemVerilog Essentials Simulation & Synthesis תיאור הקורס קורסזהמספקאתכלהידעהתיאורטי והמעשילתכנוןרכיביםמתכנתיםבעזרתשפתהסטנדרט. SystemVerilog הקורס מעמיק מאוד ונוגע בכל אספקט של הסטנדרט במסגרת הנושאים

More information

Digital Circuit Design and Language. Datapath Design. Chang, Ik Joon Kyunghee University

Digital Circuit Design and Language. Datapath Design. Chang, Ik Joon Kyunghee University Digital Circuit Design and Language Datapath Design Chang, Ik Joon Kyunghee University Typical Synchronous Design + Control Section : Finite State Machine + Data Section: Adder, Multiplier, Shift Register

More information

Lecture 32: SystemVerilog

Lecture 32: SystemVerilog Lecture 32: SystemVerilog Outline SystemVerilog module adder(input logic [31:0] a, input logic [31:0] b, output logic [31:0] y); assign y = a + b; Note that the inputs and outputs are 32-bit busses. 17:

More information

OVERVIEW: ============================================================ REPLACE

OVERVIEW: ============================================================ REPLACE OVERVIEW: With mantis 928, formal arguments to properties and sequences are defined to apply to a list of arguments that follow, much like tasks and function arguments. Previously, the type had to be replicated

More information

Online Verilog Resources

Online Verilog Resources EECS 427 Discussion 6: Verilog HDL Reading: Many references EECS 427 F08 Discussion 6 1 Online Verilog Resources ASICs the book, Ch. 11: http://www.ge.infn.it/~pratolo/verilog/verilogtutorial.pdf it/ pratolo/verilog/verilogtutorial

More information

Synthesis of Combinational and Sequential Circuits with Verilog

Synthesis of Combinational and Sequential Circuits with Verilog Synthesis of Combinational and Sequential Circuits with Verilog What is Verilog? Hardware description language: Are used to describe digital system in text form Used for modeling, simulation, design Two

More information

What, If Anything, In SystemVerilog Will Help Me With FPGA-based Design. Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc.

What, If Anything, In SystemVerilog Will Help Me With FPGA-based Design. Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc. What, If Anything, In SystemVerilog Will Help Me With FPGA-based Design Stuart Sutherland, Consultant and Trainer, Sutherland HDL, Inc. About the Presenter... Stuart Sutherland, SystemVerilog wizard Independent

More information

Introduction to Verilog/System Verilog

Introduction to Verilog/System Verilog NTUEE DCLAB Feb. 27, 2018 Introduction to Verilog/System Verilog Presenter: Yao-Pin Wang 王耀斌 Advisor: Prof. Chia-Hsiang Yang 楊家驤 Dept. of Electrical Engineering, NTU National Taiwan University What is

More information

Verilog Behavioral Modeling

Verilog Behavioral Modeling Verilog Behavioral Modeling Lan-Da Van ( 范倫達 ), Ph. D. Department of Computer Science National Chiao Tung University Taiwan, R.O.C. Spring, 2017 ldvan@cs.nctu.edu.tw http://www.cs.nctu.edu.tw/~ldvan/ Source:

More information

VHDL Structural Modeling II

VHDL Structural Modeling II VHDL Structural Modeling II ECE-331, Digital Design Prof. Hintz Electrical and Computer Engineering 5/7/2001 331_13 1 Ports and Their Usage Port Modes in reads a signal out writes a signal inout reads

More information

Extending SystemVerilog Data Types to Nets

Extending SystemVerilog Data Types to Nets Extending SystemVerilog Data Types to Nets Revision 3 This document proposes a set of SystemVerilog extensions to allow data types to be used to declare nets. The Overview section provides some rationale

More information

A User s Experience with SystemVerilog

A User s Experience with SystemVerilog A User s Experience with SystemVerilog and Doulos Ltd Ringwood, U.K. BH24 1AW jonathan.bromley@doulos.com michael.smith@doulos.com 2 Objectives Practical use of SystemVerilog Synopsys tools (VCS, Design

More information

101-1 Under-Graduate Project Digital IC Design Flow

101-1 Under-Graduate Project Digital IC Design Flow 101-1 Under-Graduate Project Digital IC Design Flow Speaker: Ming-Chun Hsiao Adviser: Prof. An-Yeu Wu Date: 2012/9/25 ACCESS IC LAB Outline Introduction to Integrated Circuit IC Design Flow Verilog HDL

More information

CSE140L: Components and Design Techniques for Digital Systems Lab

CSE140L: Components and Design Techniques for Digital Systems Lab CSE140L: Components and Design Techniques for Digital Systems Lab Tajana Simunic Rosing Source: Vahid, Katz, Culler 1 Announcements & Outline Lab 4 due; demo signup times listed on the cse140l site Check

More information

EECS 427 Lecture 14: Verilog HDL Reading: Many handouts/references. EECS 427 W07 Lecture 14 1

EECS 427 Lecture 14: Verilog HDL Reading: Many handouts/references. EECS 427 W07 Lecture 14 1 EECS 427 Lecture 14: Verilog HDL Reading: Many handouts/references EECS 427 W07 Lecture 14 1 Online Verilog Resources ASICs the book, Ch. 11: http://www.ge.infn.it/~pratolo/verilog/verilogtutorial.pdf

More information

Verilog: The Next Generation Accellera s SystemVerilog Standard

Verilog: The Next Generation Accellera s SystemVerilog Standard Verilog: The Next Generation Accellera s SystemVerilog Standard by Stuart Verilog HD and PI Expert HD, Inc. Training engineers to be HD wizards 1 Overview! Define what is SystemVerilog! Justify the need

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

EN2911X: Reconfigurable Computing Topic 02: Hardware Definition Languages

EN2911X: Reconfigurable Computing Topic 02: Hardware Definition Languages EN2911X: Reconfigurable Computing Topic 02: Hardware Definition Languages Professor Sherief Reda http://scale.engin.brown.edu School of Engineering Brown University Spring 2014 1 Introduction to Verilog

More information

Verilog Dataflow Modeling

Verilog Dataflow Modeling Verilog Dataflow Modeling Lan-Da Van ( 范倫達 ), Ph. D. Department of Computer Science National Chiao Tung University Taiwan, R.O.C. Spring, 2017 ldvan@cs.nctu.edu.tw http://www.cs.nctu.edu.tw/~ldvan/ Source:

More information

CSE140L: Components and Design

CSE140L: Components and Design CSE140L: Components and Design Techniques for Digital Systems Lab Tajana Simunic Rosing Source: Vahid, Katz, Culler 1 Grade distribution: 70% Labs 35% Lab 4 30% Lab 3 20% Lab 2 15% Lab 1 30% Final exam

More information

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis Jan 31, 2012 John Wawrzynek Spring 2012 EECS150 - Lec05-verilog_synth Page 1 Outline Quick review of essentials of state elements Finite State

More information

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

Verilog. What is Verilog? VHDL vs. Verilog. Hardware description language: Two major languages. Many EDA tools support HDL-based design Verilog What is Verilog? Hardware description language: Are used to describe digital system in text form Used for modeling, simulation, design Two major languages Verilog (IEEE 1364), latest version is

More information

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming

More information

Chapter 3: Dataflow Modeling

Chapter 3: Dataflow Modeling Chapter 3: Dataflow Modeling Prof. Soo-Ik Chae Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008, John Wiley 3-1 Objectives After completing this chapter, you will be able to: Describe

More information

Introduction to Verilog HDL. Verilog 1

Introduction to Verilog HDL. Verilog 1 Introduction to HDL Hardware Description Language (HDL) High-Level Programming Language Special constructs to model microelectronic circuits Describe the operation of a circuit at various levels of abstraction

More information

Introduction to Verilog HDL

Introduction to Verilog HDL Introduction to Verilog HDL Ben Abdallah Abderazek National University of Electro-communications, Tokyo, Graduate School of information Systems May 2004 04/09/08 1 What you will understand after having

More information

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

Computer Aided Design Basic Syntax Gate Level Modeling Behavioral Modeling. Verilog Verilog Radek Pelánek and Šimon Řeřucha Contents 1 Computer Aided Design 2 Basic Syntax 3 Gate Level Modeling 4 Behavioral Modeling Computer Aided Design Hardware Description Languages (HDL) Verilog C

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

EEL 4783: HDL in Digital System Design

EEL 4783: HDL in Digital System Design EEL 4783: HDL in Digital System Design Lecture 15: Logic Synthesis with Verilog Prof. Mingjie Lin 1 Verilog Synthesis Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for

More information

EECS150 - Digital Design Lecture 6 - Logic Simulation

EECS150 - Digital Design Lecture 6 - Logic Simulation EECS150 - Digital Design Lecture 6 - Logic Simulation Sep. 17, 013 Prof. Ronald Fearing Electrical Engineering and Computer Sciences University of California, Berkeley (slides courtesy of Prof. John Wawrzynek)

More information

Lab 2: Multipliers 6.175: Constructive Computer Architecture Fall 2014

Lab 2: Multipliers 6.175: Constructive Computer Architecture Fall 2014 Lab 2: Multipliers Due: Monday September 22, 2014 1 Introduction In this lab you will be building different multiplier implementations and testing them using custom instantiations of provided test bench

More information

Subject: Scheduling Region Questions and Problems of new SystemVerilog commands

Subject: Scheduling Region Questions and Problems of new SystemVerilog commands Subject: Scheduling Region Questions and Problems of new SystemVerilog commands I have read and re-read sections 14-17 of the SystemVerilog 3.1 Standard multiple times and am still confused about exactly

More information

Subject: Proposal: Default Interface Ports & Ref Port Modifications. Hi, All -

Subject: Proposal: Default Interface Ports & Ref Port Modifications. Hi, All - Subject: Proposal: Default Interface Ports & Ref Port Modifications Hi, All - Stu Sutherland, Dave Rich, Karen Pieper and myself met at Boston SNUG and discussed in great detail interface default ports

More information

Unifying Design and Verification

Unifying Design and Verification Unifying Design and Verification SystemVerilog Overview Agenda SystemVerilog Introduction Synopsys SystemVerilog Solution SystemVerilog Features and Successful Stories 2006 Synopsys, Inc. (2) Agenda SystemVerilog

More information

Verilog. Like VHDL, Verilog HDL is like a programming language but:

Verilog. Like VHDL, Verilog HDL is like a programming language but: Verilog Verilog Like VHDL, Verilog HDL is like a programming language but: Statements can execute simultaneously unlike programming e.g. nand(y1,a1,b1); nand(y2,a2,b2); or (out,y1,y2); a1 b1 all statements

More information

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

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations Professor Sherief Reda http://scale.engin.brown.edu School of Engineering Brown University Spring 2017 1 Topics 1. Programmable logic

More information

Digital Design with FPGAs. By Neeraj Kulkarni

Digital Design with FPGAs. By Neeraj Kulkarni Digital Design with FPGAs By Neeraj Kulkarni Some Basic Electronics Basic Elements: Gates: And, Or, Nor, Nand, Xor.. Memory elements: Flip Flops, Registers.. Techniques to design a circuit using basic

More information

14:332:231 DIGITAL LOGIC DESIGN. Hardware Description Languages

14:332:231 DIGITAL LOGIC DESIGN. Hardware Description Languages 14:332:231 DIGITAL LOGIC DESIGN Ivan Marsic, Rutgers University Electrical & Computer Engineering Fall 2013 Lecture #22: Introduction to Verilog Hardware Description Languages Basic idea: Language constructs

More information

Sunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.

Sunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. World Class SystemVerilog & UVM Training Sunburst Design - Comprehensive SystemVerilog Design & Synthesis by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff Cummings

More information

Microcomputers. Outline. Number Systems and Digital Logic Review

Microcomputers. Outline. Number Systems and Digital Logic Review Microcomputers Number Systems and Digital Logic Review Lecture 1-1 Outline Number systems and formats Common number systems Base Conversion Integer representation Signed integer representation Binary coded

More information

Chapter-5. EE 335 : Advanced Microprocessor. Logic Design with Behavioral Models of Combinational and Sequential Logic

Chapter-5. EE 335 : Advanced Microprocessor. Logic Design with Behavioral Models of Combinational and Sequential Logic EE 335 : Advanced Microprocessor Chapter-5 Logic Design with Behavioral Models of Combinational and Sequential Logic Ajay Kumar Yadav (Instructor) Electrical & Computer Engineering Temple University Data

More information

Verification Prowess with the UVM Harness

Verification Prowess with the UVM Harness Verification Prowess with the UVM Harness Interface Techniques for Advanced Verification Strategies Jeff Vance, Jeff Montesano Verilab Inc. October 19, 2017 Austin SNUG 2017 1 Agenda Introduction UVM Harness

More information

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

ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations ENGN1640: Design of Computing Systems Topic 02: Design/Lab Foundations Professor Sherief Reda http://scale.engin.brown.edu School of Engineering Brown University Spring 2016 1 Topics 1. Programmable logic

More information

Chap 4 Connecting the Testbench and. Design. Interfaces Clocking blocks Program blocks The end of simulation Top level scope Assertions

Chap 4 Connecting the Testbench and. Design. Interfaces Clocking blocks Program blocks The end of simulation Top level scope Assertions Chap 4 Connecting the Testbench and Interfaces Clocking blocks Program blocks The end of simulation Top level scope Assertions Design 1 4 Connecting the Testbench and Design Testbench wraps around the

More information

System Verilog Tagged Unions and Pattern Matching

System Verilog Tagged Unions and Pattern Matching System Verilog Tagged Unions and Pattern Matching (An extension to System Verilog 3.1 proposed to Accellera) Bluespec, Inc. Contact: Rishiyur S. Nikhil, CTO, Bluespec, Inc. 200 West Street, 4th Flr., Waltham,

More information

A Verilog Primer. An Overview of Verilog for Digital Design and Simulation

A Verilog Primer. An Overview of Verilog for Digital Design and Simulation A Verilog Primer An Overview of Verilog for Digital Design and Simulation John Wright Vighnesh Iyer Department of Electrical Engineering and Computer Sciences College of Engineering, University of California,

More information

EECS 470 Lab 1. Verilog: Hardware Description Language

EECS 470 Lab 1. Verilog: Hardware Description Language EECS 470 Lab 1 Verilog: Hardware Description Language Department of Electrical Engineering and Computer Science College of Engineering University of Michigan Thursday, 6 th September, 2018 (University

More information

Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL)

Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL) Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL) Pinit Kumhom VLSI Laboratory Dept. of Electronic and Telecommunication Engineering (KMUTT) Faculty of Engineering King Mongkut s University

More information

CS232 VHDL Lecture. Types

CS232 VHDL Lecture. Types CS232 VHDL Lecture VHSIC Hardware Description Language [VHDL] is a language used to define and describe the behavior of digital circuits. Unlike most other programming languages, VHDL is explicitly parallel.

More information

Introduction. Purpose. Intended Audience. Conventions. Close

Introduction. Purpose. Intended Audience. Conventions. Close Introduction Introduction Verilog-XL is a simulator that allows you to test the logic of a design. The process of logic simulation in Verilog-XL is as follows: 1. Describe the design to Verilog-XL. 2.

More information

HDL Introduction and Reuse

HDL Introduction and Reuse Verilog HDL Introduction and Reuse P. Bakowski bako@ieee.org Verilog HDL Verilog IEEE 13641 1995 95 P. Bakowski 2 Verilog HDL Verilog IEEE 13641 Verilog AMS 1995 95 1998 P. Bakowski 3 Verilog HDL Verilog

More information

Combinational Logic II

Combinational Logic II Combinational Logic II Ranga Rodrigo July 26, 2009 1 Binary Adder-Subtractor Digital computers perform variety of information processing tasks. Among the functions encountered are the various arithmetic

More information

List of Code Samples. xiii

List of Code Samples. xiii xiii List of Code Samples Sample 1-1 Driving the APB pins 16 Sample 1-2 A task to drive the APB pins 17 Sample 1-3 Low-level Verilog test 17 Sample 1-4 Basic transactor code 21 Sample 2-1 Using the logic

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Lecture 11: Structures and Memory (yaseminb@kth.se) Overview Overview Lecture 11: Structures and Memory Structures Continued Memory Allocation Lecture 11: Structures and Memory Structures Continued Memory

More information

EECS 470 Lab 1. Verilog: Hardware Description Language

EECS 470 Lab 1. Verilog: Hardware Description Language EECS 470 Lab 1 Verilog: Hardware Description Language Department of Electrical Engineering and Computer Science College of Engineering University of Michigan Thursday, 10 th January, 2019 (University of

More information

EECS150 - Digital Design Lecture 4 - Verilog Introduction. Outline

EECS150 - Digital Design Lecture 4 - Verilog Introduction. Outline EECS150 - Digital Design Lecture 4 - Verilog Introduction Feb 3, 2009 John Wawrzynek Spring 2009 EECS150 - Lec05-Verilog Page 1 Outline Background and History of Hardware Description Brief Introduction

More information

10. Functions (Part 2)

10. Functions (Part 2) 10.1 Overloaded functions 10. Functions (Part 2) In C++, two different functions can have the same name if their parameters are different; either because they have a different number of parameters, or

More information

1. Using the for-generahon scheme, concurrent statements can be replicated a predetermined number of times.

1. Using the for-generahon scheme, concurrent statements can be replicated a predetermined number of times. Generate Statements Concurrent statements can be conditionally selected or replicated during the elaboration phase using the generate statement. There are two forms of the generate statement. 1. Using

More information

Seamless Refinement from Transaction Level to RTL Using SystemVerilog Interfaces

Seamless Refinement from Transaction Level to RTL Using SystemVerilog Interfaces Seamless Refinement from Transaction Level to RTL Using SystemVerilog Interfaces Jonathan Bromley Doulos Ltd, Ringwood, UK jonathan.bromley@doulos.com 2 Outline Introduction: refinement steps and verification

More information

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

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 I hope you have completed Part 1 of the Experiment. This lecture leads you to Part 2 of the experiment and hopefully helps you with your progress to Part 2. It covers a number of topics: 1. How do we specify

More information

Introduction Of Classes ( OOPS )

Introduction Of Classes ( OOPS ) Introduction Of Classes ( OOPS ) Classes (I) A class is an expanded concept of a data structure: instead of holding only data, it can hold both data and functions. An object is an instantiation of a class.

More information

Partial product generation. Multiplication. TSTE18 Digital Arithmetic. Seminar 4. Multiplication. yj2 j = xi2 i M

Partial product generation. Multiplication. TSTE18 Digital Arithmetic. Seminar 4. Multiplication. yj2 j = xi2 i M TSTE8 igital Arithmetic Seminar 4 Oscar Gustafsson Multiplication Multiplication can typically be separated into three sub-problems Generating partial products Adding the partial products using a redundant

More information

Programming in C. main. Level 2. Level 2 Level 2. Level 3 Level 3

Programming in C. main. Level 2. Level 2 Level 2. Level 3 Level 3 Programming in C main Level 2 Level 2 Level 2 Level 3 Level 3 1 Programmer-Defined Functions Modularize with building blocks of programs Divide and Conquer Construct a program from smaller pieces or components

More information

Digital Signal Processing. Soma Biswas

Digital Signal Processing. Soma Biswas Digital Signal Processing Soma Biswas 2017 Partial credit for slides: Dr. Manojit Pramanik Outline What is FFT? Types of FFT covered in this lecture Decimation in Time (DIT) Decimation in Frequency (DIF)

More information

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

Lab #1. Topics. 3. Introduction to Verilog 2/8/ Programmable logic. 2. Design Flow. 3. Verilog --- A Hardware Description Language Lab #1 Lecture 8, 9, &10: FPGA Dataflow and Verilog Modeling February 9, 11, 13, 2015 Prof R Iris Bahar Lab #1 is posted on the webpage wwwbrownedu/departments/engineering/courses/engn1640 Note for problem

More information

EECS150 - Digital Design Lecture 7 - Computer Aided Design (CAD) - Part II (Logic Simulation) Finite State Machine Review

EECS150 - Digital Design Lecture 7 - Computer Aided Design (CAD) - Part II (Logic Simulation) Finite State Machine Review EECS150 - Digital Design Lecture 7 - Computer Aided Design (CAD) - Part II (Logic Simulation) Feb 9, 2010 John Wawrzynek Spring 2010 EECS150 - Lec7-CAD2 Page 1 Finite State Machine Review State Transition

More information

Spiral 1 / Unit 4 Verilog HDL. Digital Circuit Design Steps. Digital Circuit Design OVERVIEW. Mark Redekopp. Description. Verification.

Spiral 1 / Unit 4 Verilog HDL. Digital Circuit Design Steps. Digital Circuit Design OVERVIEW. Mark Redekopp. Description. Verification. 1-4.1 1-4.2 Spiral 1 / Unit 4 Verilog HDL Mark Redekopp OVERVIEW 1-4.3 1-4.4 Digital Circuit Design Steps Digital Circuit Design Description Design and computer-entry of circuit Verification Input Stimulus

More information

CSE241 VLSI Digital Circuits Winter Recitation 1: RTL Coding in Verilog

CSE241 VLSI Digital Circuits Winter Recitation 1: RTL Coding in Verilog CSE241 VLSI Digital Circuits Winter 2003 Recitation 1: RTL Coding in Verilog CSE241 R1 Verilog.1 Kahng & Cichy, UCSD 2003 Topic Outline Introduction Verilog Background Connections Modules Procedures Structural

More information

OUTLINE SYSTEM-ON-CHIP DESIGN. GETTING STARTED WITH VHDL September 3, 2018 GAJSKI S Y-CHART (1983) TOP-DOWN DESIGN (1)

OUTLINE SYSTEM-ON-CHIP DESIGN. GETTING STARTED WITH VHDL September 3, 2018 GAJSKI S Y-CHART (1983) TOP-DOWN DESIGN (1) September 3, 2018 GETTING STARTED WITH VHDL 2 Top-down design VHDL history Main elements of VHDL Entities and architectures Signals and processes Data types Configurations Simulator basics The testbench

More information

Object-Oriented Principles and Practice / C++

Object-Oriented Principles and Practice / C++ Object-Oriented Principles and Practice / C++ Alice E. Fischer September 26, 2016 OOPP / C++ Lecture 4... 1/33 Global vs. Class Static Parameters Move Semantics OOPP / C++ Lecture 4... 2/33 Global Functions

More information

Lab 7 (All Sections) Prelab: Introduction to Verilog

Lab 7 (All Sections) Prelab: Introduction to Verilog Lab 7 (All Sections) Prelab: Introduction to Verilog Name: Sign the following statement: On my honor, as an Aggie, I have neither given nor received unauthorized aid on this academic work 1 Objective The

More information

Hardware Description Languages: Verilog

Hardware Description Languages: Verilog Hardware Description Languages: Verilog Verilog Structural Models (Combinational) Behavioral Models Syntax Examples CS 150 - Fall 2005 - Lecture #4: Verilog - 1 Quick History of HDLs ISP (circa 1977) -

More information

COMP322 - Introduction to C++ Lecture 02 - Basics of C++

COMP322 - Introduction to C++ Lecture 02 - Basics of C++ COMP322 - Introduction to C++ Lecture 02 - Basics of C++ School of Computer Science 16 January 2012 C++ basics - Arithmetic operators Where possible, C++ will automatically convert among the basic types.

More information

FPGA Matrix Multiplier

FPGA Matrix Multiplier FPGA Matrix Multiplier In Hwan Baek Henri Samueli School of Engineering and Applied Science University of California Los Angeles Los Angeles, California Email: chris.inhwan.baek@gmail.com David Boeck Henri

More information

ECE Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers

ECE Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers ECE 601 - Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers Fall 2001 Final Version (Important changes from original posted Exercise 1 shown in color) Variables

More information

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

FPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language. Reference: [1] FPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language Reference: [] FIELD PROGRAMMABLE GATE ARRAY FPGA is a hardware logic device that is programmable Logic functions may be programmed

More information

Course Topics - Outline

Course Topics - Outline Course Topics - Outline Lecture 1 - Introduction Lecture 2 - Lexical conventions Lecture 3 - Data types Lecture 4 - Operators Lecture 5 - Behavioral modeling A Lecture 6 Behavioral modeling B Lecture 7

More information

8. Functions (II) Control Structures: Arguments passed by value and by reference int x=5, y=3, z; z = addition ( x, y );

8. Functions (II) Control Structures: Arguments passed by value and by reference int x=5, y=3, z; z = addition ( x, y ); - 50 - Control Structures: 8. Functions (II) Arguments passed by value and by reference. Until now, in all the functions we have seen, the arguments passed to the functions have been passed by value. This

More information

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

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1 FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1 Anurag Dwivedi Digital Design : Bottom Up Approach Basic Block - Gates Digital Design : Bottom Up Approach Gates -> Flip Flops Digital

More information

SystemVerilog Design: User Experience Defines Multi-Tool, Multi-Vendor Language Working Set Experience from Four Years of SVD Adoption

SystemVerilog Design: User Experience Defines Multi-Tool, Multi-Vendor Language Working Set Experience from Four Years of SVD Adoption SystemVerilog Design: User Experience Defines Multi-Tool, Multi-Vendor Language Working Set Experience from Four Years of SVD Adoption Junette Tan, PMC Agenda Motivating Factors for SV Adoption Migration

More information

Fused Floating Point Arithmetic Unit for Radix 2 FFT Implementation

Fused Floating Point Arithmetic Unit for Radix 2 FFT Implementation IOSR Journal of VLSI and Signal Processing (IOSR-JVSP) Volume 6, Issue 2, Ver. I (Mar. -Apr. 2016), PP 58-65 e-issn: 2319 4200, p-issn No. : 2319 4197 www.iosrjournals.org Fused Floating Point Arithmetic

More information

Module 4. Design of Embedded Processors. Version 2 EE IIT, Kharagpur 1

Module 4. Design of Embedded Processors. Version 2 EE IIT, Kharagpur 1 Module 4 Design of Embedded Processors Version 2 EE IIT, Kharagpur 1 Lesson 23 Introduction to Hardware Description Languages-III Version 2 EE IIT, Kharagpur 2 Instructional Objectives At the end of the

More information

ECE 353 Lab 4. Verilog Review. Professor Daniel Holcomb With material by Professor Moritz and Kundu UMass Amherst Fall 2016

ECE 353 Lab 4. Verilog Review. Professor Daniel Holcomb With material by Professor Moritz and Kundu UMass Amherst Fall 2016 ECE 353 Lab 4 Verilog Review Professor Daniel Holcomb With material by Professor Moritz and Kundu UMass Amherst Fall 2016 Recall What You Will Do Design and implement a serial MIDI receiver Hardware in

More information

VERILOG. Deepjyoti Borah, Diwahar Jawahar

VERILOG. Deepjyoti Borah, Diwahar Jawahar VERILOG Deepjyoti Borah, Diwahar Jawahar Outline 1. Motivation 2. Basic Syntax 3. Sequential and Parallel Blocks 4. Conditions and Loops in Verilog 5. Procedural Assignment 6. Timing controls 7. Combinatorial

More information

DESIGN OF A COMPOSITE ARITHMETIC UNIT FOR RATIONAL NUMBERS

DESIGN OF A COMPOSITE ARITHMETIC UNIT FOR RATIONAL NUMBERS DESIGN OF A COMPOSITE ARITHMETIC UNIT FOR RATIONAL NUMBERS Tomasz Pinkiewicz, Neville Holmes, and Tariq Jamil School of Computing University of Tasmania Launceston, Tasmania 7250 AUSTRALIA Abstract: As

More information

Verilog HDL Introduction

Verilog HDL Introduction EEE3050 Theory on Computer Architectures (Spring 2017) Prof. Jinkyu Jeong Verilog HDL Introduction 2017.05.14 TA 이규선 (GYUSUN LEE) / 안민우 (MINWOO AHN) Modules The Module Concept Basic design unit Modules

More information

Sunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc.

Sunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. World Class Verilog & SystemVerilog Training Sunburst Design - Advanced SystemVerilog for Design & Verification by Recognized Verilog & SystemVerilog Guru, Cliff Cummings of Sunburst Design, Inc. Cliff

More information

Lecture 7. Log into Linux New documents posted to course webpage

Lecture 7. Log into Linux New documents posted to course webpage Lecture 7 Log into Linux New documents posted to course webpage Coding style guideline; part of project grade is following this Homework 4, due on Monday; this is a written assignment Project 1, due next

More information

CPSC 427a: Object-Oriented Programming

CPSC 427a: Object-Oriented Programming CPSC 427a: Object-Oriented Programming Michael J. Fischer Lecture 5 September 15, 2011 CPSC 427a, Lecture 5 1/35 Functions and Methods Parameters Choosing Parameter Types The Implicit Argument Simple Variables

More information

Chapter 6: Hierarchical Structural Modeling

Chapter 6: Hierarchical Structural Modeling Chapter 6: Hierarchical Structural Modeling Prof. Soo-Ik Chae Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008, John Wiley 6-1 Objectives After completing this chapter, you will

More information

Introduction to Bluespec

Introduction to Bluespec Introduction to Bluespec Andy Wright acwright@mit.edu Updated: December 30, 2013 1 Combinational Logic 1.1 Primitive Types definition: Bool This is a basic type for expressing true-false values with a

More information