0% found this document useful (0 votes)
27 views

FPGA Prototyping Appendix A

Uploaded by

Amir Mahdy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

FPGA Prototyping Appendix A

Uploaded by

Amir Mahdy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

APPENDIX A

SAMPLE VERILOG TEMPLATES

A.l NUMBERS AND OPERATORS

A.l.l Sized and unsized numbers

number stored value comment


5'bllOlO 11010
5'blI-010 11010 - ignored
5'032 11010
5 'hla 11010
5'd26 11010
5'bO 00000 0 extended
5'bl 00001 0 extended
5'bz ZZZZZ z extended
5'bx XXXXX x extended
5'bxOl xxx0l x extended
-5 ' b0000 1 I1111 2's complement of 00001
' b11010 00000000000000000000OOOOOOOllOlO extended to 32 bits
' hee 00000000000000000000OOOOl1101110 extended to 32 bits
1 00000000000000000000000000000001 extended to 32 bits
-1 11111111111111111111111111111111 extended to 32 bits

FPGA Proto@ping by Verilog Examples. By Pong P. Chu


Copyright @ 2008 John Wiley & Sons, Inc.
A.1.2 Operators

n p e of Operator Description Number


operation symbol of operands
Arithmetic + addition 2
- subtraction 2
* multiplication 2
/ division 2
% modulus 2
+* exponentiation 2
Shift >> logical right shift 2
<< logical left shift 2
>>> arithmetic right shift 2
<<< logical left shift 2
Relational > greater than 2
< less than 2
>= greater than or equal to 2
<= less than or equal to 2
Equality -- equality
!= inequality
--- case equality
I == case inequality
Bitwise - bitwise negation 1
& bitwise and 2
I bitwise or 2
. bitwise xor 2
Reduction & reduction and 1
I reduction or 1
. reduction xor 1
Logical ! logical negation 1
&& logical and 2
II logical or 2
Concatenation { } concatenation any
{ { ) ) replication any
Conditional ? : conditional 3
A.2 GENERAL VERILOG CONSTRUCTS

A.2.1 Overall code structure

Listing A . l Overall code structure


module bin-counter
// o p t i o n a l parameter d e c l a r a t i o n
# ( p a r a m e t e r N=8) // d e f a u l t 8
// p o r t d e c l a r a t i o n
5 (
i n p u t w i r e clk, r e s e t , // c l o c k & r e s e t
i n p u t w i r e syn-clr, l o a d , en, // i n p u t c o n t r o l
i n p u t w i r e [N-1:Ol d, // i n p u t d a t a
o u t p u t w i r e max-tick, // o u t p u t s t a t u s
10 o u t p u t w i r e [N-1:Ol q // o u t p u t d a t a
);

// c o n s t a n t d e c l a r a t i o n
l o c a l p a r a m MAX = 2**N - 1;
I? // s i g n a l d e c l a r a t i o n
r e g IN-1:01 r-reg, r - n e x t ;

// body
.............................................
20 // component instantiation
.............................................
/ / no i n s t a n t i a t i o n i n t h i s code

zr / / memory e l e m e n t s

// r e g i s t e r
a l w a y s Q ( p o s e d g e clk, p o s e d g e reset)
i f (reset)
1u r-reg <= 0 ;
else
r-reg <= r-next;

35 // c o m b i n a t i o n a l circuits

// n e x t - . s t a t e logic
always Q*
i f (syn-clr)
r-next = 0 ;
e l s e i f (load)
r-next = d ;
e l s e i f (en)
r-next = r-reg + 1 ;
45 else
r-next = r - r e g ;
// o u t p u t l o g i c
a s s i g n q = r-reg;
a s s i g n max-tick = (r-reg==2**N-1) ? l J b l : l J b O ;
50

endmodule

A.2.2 Component instantiation

Listing A.2 Component instantiation template


module counter-inst
(
i n p u t w i r e clk , reset,
i n p u t w i r e syn-clrl6, loadl6, en16,
5 i n p u t w i r e [15:01 d ,
o u t p u t w i r e max-tick8, max-tickl6,
o u t p u t w i r e [15:01 q
1;

lo //body
// i n s t a n t i a t i o n o f 1 6 - b i t c o u n t e r , a l l p o r t s u s e d
bin-counter #(.N(16)) counter-16-unit
( . clk(c1k) , .reset (reset),
. syn-clr (syn_clrl6), . load(loadl6), . en(enl61,
IS .d(d), .max-tick(max_tickl6), . q ( q ) ) ;
// i n s t a n t i a t i o n of f r e e - r u n n i n g 8 - b i t c o u n t e r
// with only the max-tick s i g n a l
bin-counter counter-8-unit
(.clk(clk), .reset(reset),
20 . syn-clr (1 'bO), . load(lJbO), . en(lJbl) ,
.d(8'h00), .max-tick(max_tick8), . q O ) ;

endmodule

A.3 ROUTING WITH CONDITIONAL OPERATOR AND IF AND CASE


STATEMENTS

A.3.1 Conditional operator and if statement

Listing A.3 Priority encoder using conditional operator and if statement


(
i n p u t w i r e [ 4 : 11 r ,
o u t p u t w i r e [2:0] yl,
o u t p u t r e g [2:0] y2
s 1;

// C o n d i t i o n a l o p e r a t o r
a s s i g n yl = (r [41) ? 3lb100 : // can a l s o use ( r [ 4 ] = = l ' b l )
(r[31) ? 3'b011 :
(r [ 2 ] ) ? 3'bOlO :
// I f s t a t e m e n t
15 // - each branch can c o n t a i n m u l t i p l e s t a t e m e n t s
// with begin . . . end d e l i m i t e r s
a l w a y s Q*
i f (rC41)
y 2 = 3'blOO;
20 e l s e i f (r [31)
y 2 = 3'b011;
e l s e i f (r C21)
y 2 = 3'bOlO;
e l s e i f (r [I])
zj y 2 = 3'bOOl;
else
y 2 = 3'bOOO;

endmodule

A.3.2 Case statement

Listing A.4 Priority encoder using case statement


module prio-encoder-case
(
i n p u t w i r e [4:11 r ,
o u t p u t r e g [2:01 y 1 , y 2
5 1;

// case s t a t e m e n t
// - each branch can c o n t a i n m u l t i p l e statements
// with begin . . . end d e l i m i t e r s
10 a l w a y s Q*
c a s e (r)
4'b1000, 4'b1001, 4'b1010, 4'b1011,
4'b1100, 4'b1101, 4'b1110, 4'bllll:
yl = 3'blOO;
4'b0100, 4'b0101, 4'b0110, 4'b0111:
yl = 3'b011;
4'b0010, 4'bOOll:
yl = 3'bOlO;
4'b0001:
20 yl = 3'bOOl;
4'boo00 : / / d e f a u l t c a n a l s o be u s e d
yl = 3'bOOO;
endcase

2% // c a s e z s t a t e m e n t
always Q*
c a s e z (r)
4'bl???: y 2 = 3'blOO; // u s e ? f o r don ' t - c a r e
4'b01??: y2 = 3'bOll;
30 4'b001?: y2 = 3'bOlO;
4'bOOOl: y2 = 3'bOOl;
4'bOOOO: y2 = 3'bOOO; // default can a l s o be used
endcase

35 endmodule

A.4 COMBINATIONAL CIRCUIT USING AN ALWAYS BLOCK

A.4.1 Always block without default output assignment

Listing A.5 Always block template (without default output assignment)


module compare-no-def ult
(
input wire a, b ,
o u t p u t r e g g t , eq
5 1;

/ / - u s e @* t o i n c l u d e a l l i n p u t s i n sensitivity list
/ / - e l s e b r a n c h c a n n o t be o m i t t e d
// - a l l o u t p u t s must be a s s i g n e d i n
a l l branches
10 always O*
i f ( a > b)
begin
gt = l'bl;
eq = l J b O ;
end
e l s e i f (a == b)
begin
gt = l J b O ;
eq = l'bl;
end
else // e l s e branch cannot be o m i t t e d
begin
gt = l J b O ;
eq = l J b O ;
25 end

endmodule

A.4.2 Always block with default output assignment

Listing A.6 Always block template (with default output assignment)


module c o m p a r e - w i t h - d e f a u l t
(
input wire a , b ,
o u t p u t r e g g t , eq
MEMORY COMPONENTS 473

// - u s e @* t o i n c l u d e a l l i n p u t s i n s e n s i t i v i t y list
// - a s s i g n each o u t p u t with a d e f a u l t value
always Q*
lo begin
gt = l'bO; // d e f a u l t value f o r g t
e q = I'bO; / / d e f a u l t v a l u e f o r eq
i f ( a > b)
gt = l'bl;
e l s e i f (a == b)
eq = l'bl;
end

endmodule

A.5 MEMORY COMPONENTS

A.5.1 Register template

Listing A.7 Register template


module r e g - t e m p l a t e
(
input wire c l k , reset,
input wire en,
5 input wire [ 7 : 01 ql-next , q2-next , q 3 _ n e x t ,
output reg [7:01 q l - r e g , q 2 - r e g , q 3 - r e g
1;

10 // register without reset


.............................................

// use nonblock a s s i g n m e n t ( <= )


always Q(posedge c l k )
q l - r e g <= q l - n e x t ;
I i
.............................................
// register w i t h asynchronozrs reset

/ / u s e n o n b l o c k a s s i g n m e n t ( <= )
I always Q ( p o s e d g e c l k , posedge reset)
i f (reset)
q 2 - r e g <= 8'bO;
else
q 2 - r e g <= q 2 - n e x t ;
3
.............................................
// register w i t h e n a b l e and a s y n c h r o n o u s reset
.............................................
// use nonblock assignment ( <= )
474 SAMPLE VERILOG TEMPLATES

3 always @ ( p o s e d g e c l k , posedge r e s e t )
if (reset)
q 3 - r e g <= 8 ' b O ;
else i f (en)
q 3 - r e g <= q 3 - n e x t ;
35

endmodule

A.5.2 Register file

Listing A.8 Register file


module r e g - f i l e
#(
parameter B = 8, / / number of b i t s
W = 2 / / number of a d d r e s s bits
5 1
(
input wire c l k ,
input wire wr-en,
i n p u t w i r e [W-1:OI w - a d d r , r-addr,
i n p u t w i r e [B-1:Ol w - d a t a ,
o u t p u t w i r e [B-1:Ol r - d a t a
);

// s i g n a l d e c l a r a t i o n
15 r e g [B-1:Ol a r r a y - r e g [2**W-1:Ol ;

/ / body
// w r i t e
operation
always @ ( p o s e d g e c l k )
20 i f (wr-en)
a r r a y - r e g [w-addr] <= w - d a t a ;
// read o p e r a t i o n
assign r-data = array-reg [r-addrl ;

A.6 REGULAR SEQUENTIAL CIRCUITS

Listing A.9 Sequential circuit template


I I

// Universal counter function table


,,

// s y n - c l r load en q* operation
5 //
// I - - 0 synchronous c l e a r
// 0 1 - d parallel load
// 0 0 I q+l c o u n t up
REGULAR SEQUENTIAL CIRCUITS 475

// 0 0 0 9 pause

module b i n - c o u n t e r
# ( p a r a m e t e r N=8) // default 8
(
input wire c l k , r e s e t , // c l o c k & r e s e t
IS input wire syn-clr, l o a d , e n , // i n p u t c o n t r o l
i n p u t w i r e [N-1:01 d , // i n p u t d a t a
output wire max-tick, // o u t p u t s t a t u s
o u t p u t w i r e [N-1:OI q // o u t p u t d a t a
1;
20

// c o n s t a n t d e c l a r a t i o n
l o c a l p a r a m MAX = 2**N - 1 ;
// s i g n a l d e c l a r a t i o n
r e g [N-1:Ol r - r e g , r - n e x t ;

// register
.............................................
30 // r e g i s t e r
always O(posedge c l k , posedge r e s e t )
if ( r e s e t )
r - r e g <= 0 ;
else
3s r - r e g <= r - n e x t ;
.............................................
// n e x t - s t a t e logic
.............................................
a l w a y s Q*
40 if (syn-clr)
r-next = 0;
else if (load)
r-next = d ;
else if (en)
r-next = r-reg + 1;
else
r-next = r-reg;
.............................................
// output logic
.............................................
assign q = r-reg;
a s s i g n max-tick = (r-reg==2**N-1) ? l'bl : 17bO;

endmodule
(a) State diagram (b) A S M chart

Figure A.l State diagram and ASM chart of an FSM template.

A.7 FSM

Listing A.10 FSM template


/ / c o d e f o r [ h e FSM i n F i g u r e A . 1
module f sm-eg-2-seg
(
input wire clk, reset,
input wire a, b,
o u t p u t r e g y o , yl
);

// symbolic s t a t e d e c l a r a t i o n
10 l o c a l p a r a m [1:0] SO = 2 I b 0 0 ,
sl = 2'b01,
s2 = 2'biO;
// s i g n a l d e c l a r a t i o n
r e g [I: 01 s t a t e - r e g , s t a t e - n e x t ;
FSM 477

// s t a t e
register
always Q ( p o s e d g e clk, posedge r e s e t )
if (reset)
state-reg <= s o ;
else
state-reg <= s t a t e - n e x t ;

// n e x t - s t a t e l o g i c and o u t p u t logic
always Q*
zs begin
state-next = state-reg; // d e f a u l t n e x t s t a t e : t h e same
y l = l'bO; // d e f a u l t o u t p u t : 0
yo = l ' b O ; // d e f a u l t o u t p u t : 0
case (state-reg)
SO : begin
yl = l'bl;
if (a)
if (b)
begin
state-next = s2;
yo = l ' b l ;
end
else
state-next = sl;
end
sl: begin
yl = l'bl;
if (a)
state-next = SO;
end
s 2 : s t a t e - n e x t = SO;
d e f a u l t : s t a t e - n e x t = SO;
endcase
end
sa endmodule
Figure A.2 ASMD chart of an FSMD template.

A.8 FSMD

Listing A . l l FSMD template


// code f o r t h e FSMD shown i n F i g u r e A . 2
module f i b
(
input wire clk, r e s e t ,
input wire s t a r t ,
i n p u t w i r e C4:OI i ,
FSMD 479

output reg r e a d y , done-tick ,


output wire [19:0] f
1;
10

// symbolic s t a t e declaration
l o c a l p a r a m 11 : 01
i d l e = 2 'b00,
op = 2'b01,
IS done = 2 ' b l O ;

// s i g n a l declaration
r e g [ I : 01 state-reg , state-next ;
reg [19:0] to-reg , to-next , t l - r e g , tl-next ;
20 reg [4:01 n-reg , n-next ;

// body
// s t a t e & d a t a registers
always O(posedge c l k , posedge r e s e t )
25 if (reset)
begin
s t a t e - r e g <= i d l e ;
t o - r e g <= 0 ;
t l - r e g <= 0 ;
n - r e g <= 0 ;
end
else
begin
s t a t e - r e g <= s t a t e - n e x t ;
t o - r e g <= t o - n e x t ;
t l - r e g <= t l - n e x t ;
n - r e g <= n - n e x t ;
end
// n e x t - s t a t e l o g i c and d a t a p a t h f u n c t i o n a l units
40 a l w a y s O*
begin
state-next = state-reg; // d e f a u l t r e t u r n t o same s t a t e
ready = l'bO; // default output 0
done-tick = l'bO; // default output 0
to-next = to-reg; // d e f a u l t keep p r e v i o u s value
tl-next = tl-reg; // d e f a u l t keep p r e v i o u s value
n-next = n-reg; // d e f a u l t keep p r e v i o u s value
case (state-reg)
idle :
begin
ready = l J b l ;
if (start)
begin
to-next = 0;
tl-next = 20'dl;
n-next = i ;
state-next = op;
end
end
61) op :
if (n-reg==O)
begin
tl-next = 0;
state-next = done;
end
else if (n-reg==l)
s t a t e - n e x t = done;
else
begin
tl-next = tl-reg + to-reg;
to-next = t l - r e g ;
n-next = n-reg - 1 ;
end
done :
begin
done-tick = l ' b l ;
state-next = idle;
end
default: state-next = idle;
endcase
end
/ / OLltplrt
assign f = tl-reg;

A.9 S3 BOARD CONSTRAINT FILE (S3 .UCF)

# Pin assignment f o r Xilinx


# Spartan-3 S t a r t e r board
.........................................................

# c l o c k and r e s e t
.........................................................
NET " c l k " LOC = " T 9 " ;
NET " r e s e t " LOC = " L 1 4 " ;

# buttons & switches


.........................................................
# 4 pushbuttons
NET " b t n < O > " LOC = "M13";
NET " b t n < l > " LOC = "M14";
NET " b t n < 2 > " LOC = "L13";
#NET " b t n < 3 > " LOC = "L14"; #btn<3> also used as r e s e t

# 8 slide switches
NET " s w < O > " LOC = " F 1 2 " ,
NET "sw<l>" LOC = "G12";
NET "sw<2>" LOC = "H14";
NET "sw<3>" LOC = "H13";
NET "sw<4>" LOC = "514";
NET "sw<5>" LOC = "513";
NET "sw<6>" LOC = "K14";
NET "sw<7>" LOC = "K13";

.........................................................
# RS232
.........................................................
NET " r x " LOC = " T 1 3 " 1 DRIVE=8 I SLEW=SLOW;
NET " t x " LOC = " R 1 3 " I DRIVE=8 I SLEW=SLOW;

.........................................................
# 4 - d i g i t t i m e - m u l t i p l e x e d 7-segment LED d i s p l a y
.........................................................
# d i g i t enable
NET " a n < O > " LOC = "D14";
NET " a n < l > " LOC = "G14";
NET " a n < 2 > " LOC = "F14";
NET " a n < 3 > " LOC = "E13";

# 7-segment l e d segments
NET " s s e g < 7 > " LOC = " P 1 6 " ; # decimul point
NET "sseg<6>' LOC = " E 1 4 " ; # segment a
NET " s s e g < 5 > " LOC = "G13" , # segment b
NET " s s e g < 4 > " LOC = " N 1 5 " ; # segment c
NET " s s e g < 3 > " LOC = " P 1 5 " ; # segment d
NET " s s e g < 2 > " LOC = " R 1 6 " ; # segment e
NET " s s e g < l > " LOC = " F 1 3 " ; # segment f
NET " s s e g < O > " LOC = " N 1 6 " ; # segment g

.........................................................
# 8 d i s c r e t e LEDs
.........................................................
NET "led<O>" LOC = "K12";
NET "led<l>" LOC = "P14";
NET "led<2>" LOC = "L12";
NET "led<3>" LOC = "N14";
NET "led<4>" LOC = "P13";
NET "led<5>" LOC = "N12";
NET "led<6>" LOC = '1P12";
NET "led<7>" LOC = "P11":

.........................................................
# VGA o u t p u t s
.........................................................
NET "rgb<2>" LOC = "R12" I DRIVE=8 I SLEW=FAST;
NET "rgb<i>" LOC = "T12" I DRIVE=8 1 SLEW=FAST;
NET "rgb<O>" LOC = "R11" I DRIVE=8 I SLEW=FAST;
NET "vsync" LOC = " T 1 0 " I DRIVE=8 I SLEW=FAST;
NET "hsync" LOC = "R9" I DRIVE=8 I SLEW=FAST;
.........................................................
# PS2 port
.........................................................
NET "ps2c" LOC="M1GW I IOSTANDARD=LVCMOS33 I DRIVE=8 ISLEW=SLOW:
NET "ps2d1'LOC="M15" I IOSTANDARD=LVCMOS33 I DRIVE=8 ISLEW=SLOW;
.........................................................
# two SRAM chips
.........................................................
# shared 18-bit memory a d d r e s s
NET "ad<17>" LOC="L3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<16>" LOC="KS1' I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<15>" LOC="K3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<14>" LOC="J3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<13>I1 LOC="J4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<12>" LOC="H4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<ll>" LOC="H3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<lO>" LOC="GS" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<9>" LOC="E4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<8>" LOC="E3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<7>" LOC="F4" I IOSTANDARD = LVCMOS33 I SLEW=FAST:
NET "ad<6>" LOC="F3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<5>" LOC="G4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
IOI NET "ad<4>" LOC="L4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<3>" LOC="M3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<2>I1 LOC="M4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<l>" LOC="N3" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET "ad<O>" LOC="LSM I IOSTANDARD = LVCMOS33 I SLEW=FAST;

# shared oe, we
NET "oe-n" LOC="K4" I IOSTANDARD = LVCMOS33 I SLEW=FAST;
NET " we-n" LOC="G3" 1 IOSTANDARD = LVCMOS33 I SLEW=FAST;
# sram chip 1 data, ce, ub, lb
NET "dio-a<l5>" LOC="RIN I IOSTANDARD=LVCMOS33
NET "dio-a<l4>" LOC="PIM I IOSTANDARD=LVCMOS33
NET "dio-a<13>" LOC="L2" I IOSTANDARD=LVCMOS33
NET "dio-a <l2>It LOC="J2" I IOSTANDARD=LVCMOS33
NET "dio-a<ll>" LOC="Hll' I IOSTANDARD=LVCMOS33
NET "dio-a<lO>" LOC="F2" I IOSTANDARD=LVCMOS33
NET "dio-a <9>" LOC="P8" I IOSTANDARD=LVCMOS33
NET "dio-a<8>" LOC="D3" I IOSTANDARD=LVCMOS33
NET "dio-a<7>" LOC="B1" I IOSTANDARD=LVCMOS33
NET "dio-a<6>" LOC="C1" I IOSTANDARD=LVCMOS33
NET "dio-a<5>" LOC="C2" I IOSTANDARD=LVCMOS33
NET " dio-a <4>" LOC="RS1' I IOSTANDARD=LVCMOS33
NET "dio-a<3>" LOC="TSN I IOSTANDARD=LVCMOS33
NET "dio-a<2>" LOC="RGM I IOSTANDARD=LVCMOS33
NET "dio-a<l>" LOC="T8" I IOSTANDARD=LVCMOS33
NET " dio-a <O>" LOC="N7" I IOSTANDARD=LVCMOS33
NET "ce-a-nu LOC="P7" I IOSTANDARD=LVCMOS33
NET "ub-a-n" LOC="T4" I IOSTANDARD=LVCMOS33
53 BOARD CONSTRAINT FILE (S3.UCF) 483

NET "lb-a-n" LOC="P6" I IOSTANDARD=LVCMOS33 I SLEW=FAST;

# sram chip 2 data, ce, ub, lb


NET "dio-b<l5>I1 LOC="N1" I IOSTANDARD=LVCMOS33
NET " dio-b <l4>" LOC="M1" I IOSTANDARD=LVCMOS33
NET "dio-b<l3>" LOC="K2" I IOSTANDARD=LVCMOS33
NET "dio-b <l2>" LOC="C3" I IOSTANDARD=LVCMOS33
NET "die-b <ll>" LOC="F5" I IOSTANDARD=LVCMOS33
NET " dio-b <lo>" LOC="GI " I IOSTANDARD=LVCMOS33
NET "dio-b<9>" LOC="E2" I IOSTANDARD=LVCMOS33
NET " dio-b <8>" LOC="D2" I IOSTANDARD=LVCMOS33
NET " dio-b < 7 > " LOC='Dll' I IOSTANDARD=LVCMOS33
NET "dio-b<6>" LOC="Ell' I IOSTANDARD=LVCMOS33
NET "dio-b<5>" LOC="G2" I IOSTANDARD=LVCMOS33
NET "dio-b<4>" LOC="Jl" I IOSTANDARD=LVCMOS33
NET "dio-b<3>" LOC="Kl" I IOSTANDARD=LVCMOS33
NET "dio-b<2>" LOC="M2" I IOSTANDARD=LVCMOS33
NET "dio-b <l>" LOC="N2" I IOSTANDARD=LVCMOS33
NET "die-b<O>" LOC="P2" I IOSTANDARD=LVCMOS33
NET "ce-b-n" LOC="N5" I IOSTANDARD=LVCMOS33
NET "ub-b-n" LOC="R4" I IOSTANDARD=LVCMOS33
NET " lb-b-n" LOC="P5" I IOSTANDARD=LVCMOS33

.........................................................
# Timing constraint of S3 50-MHz onboard oscillator
# name of the clock signal is clk
.........................................................
NET "clk" TNM-NET = "clk";
TIMESPEC "TS-clk" = PERIOD "clk" 40 ns HIGH 50 %;

You might also like