SystemVerilog Lecture 3. Prof. Gerald E. Sobelman Dept. of Electrical and Computer Engineering University of Minnesota Minneapolis, MN USA
|
|
- Gerald McCoy
- 5 years ago
- Views:
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 Course Description This course provides all necessary theoretical and practical know-how to design programmable logic devices using SystemVerilog standard
More informationSystemVerilog 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 informationLast 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 informationIntroduction 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 informationExtending 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 informationIntroduction 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 informationSystemVerilog 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 informationIn 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 informationCourse 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 הקורס מעמיק מאוד ונוגע בכל אספקט של הסטנדרט במסגרת הנושאים
More informationDigital 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 informationLecture 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 informationOVERVIEW: ============================================================ 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 informationOnline 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 informationSynthesis 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 informationWhat, 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 informationIntroduction 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 informationVerilog 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 informationVHDL 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 informationExtending 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 informationA 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 information101-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 informationCSE140L: 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 informationEECS 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 informationVerilog: 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 informationCS201 - 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 informationEN2911X: 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 informationVerilog 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 informationCSE140L: 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 informationEECS150 - 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 informationVerilog. 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 informationSTUDY 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 informationChapter 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 informationIntroduction 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 informationIntroduction 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 informationComputer 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 informationShort 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 informationEEL 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 informationEECS150 - 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 informationLab 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 informationSubject: 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 informationSubject: 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 informationUnifying 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 informationVerilog. 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 informationENGN1640: 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 informationDigital 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 information14: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 informationSunburst 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 informationMicrocomputers. 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 informationChapter-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 informationVerification 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 informationENGN1640: 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 informationChap 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 informationSystem 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 informationA 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 informationEECS 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 informationLecture 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 informationCS232 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 informationIntroduction. 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 informationHDL 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 informationCombinational 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 informationList 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 informationEL2310 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 informationEECS 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 informationEECS150 - 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 information10. 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 information1. 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 informationSeamless 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 informationa, 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 informationIntroduction 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 informationPartial 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 informationProgramming 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 informationDigital 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 informationLab #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 informationEECS150 - 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 informationSpiral 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 informationCSE241 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 informationOUTLINE 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 informationObject-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 informationLab 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 informationHardware 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 informationCOMP322 - 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 informationFPGA 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 informationECE 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 informationFPGA: 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 informationCourse 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 information8. 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 informationFPGA 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 informationSystemVerilog 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 informationFused 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 informationModule 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 informationECE 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 informationVERILOG. 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 informationDESIGN 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 informationVerilog 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 informationSunburst 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 informationLecture 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 informationCPSC 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 informationChapter 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 informationIntroduction 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