# LUT RAMs for Virtex, Virtex 2, Spartan 3, Virtex 4.
# The corresponding mapping file is lutrams_xcv_map.v
ram distributed $__XILINX_LUTRAM_SP_ {
width 1;
option "ABITS" 4 {
abits 4;
cost 3;
}
option "ABITS" 5 {
abits 5;
cost 5;
}
ifndef IS_VIRTEX {
option "ABITS" 6 {
abits 6;
cost 9;
}
}
ifdef IS_VIRTEX2 {
# RAM128X1S
option "ABITS" 7 {
abits 7;
cost 17;
}
}
init no_undef;
prune_rom;
port arsw "RW" {
clock posedge;
}
}
ram distributed $__XILINX_LUTRAM_DP_ {
width 1;
option "ABITS" 4 {
abits 4;
cost 5;
}
ifdef IS_VIRTEX2 {
# RAM32X1D
option "ABITS" 5 {
abits 5;
cost 9;
}
# RAM64X1D
option "ABITS" 6 {
abits 6;
cost 17;
}
}
init no_undef;
prune_rom;
port arsw "RW" {
clock posedge;
}
port ar "R" {
}
}
iCE40/yosys/'>iCE40/yosys
blob: db29e60f1927a941dc588064fd438a0dc2aafc3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
module tb();
reg clk;
reg reset;
reg enable;
reg up_down;
wire [7 : 0] count;
wire overflow;
initial begin
$monitor("rst %b en %b updown %b cnt %b overflow %b",
reset,enable,up_down,count, overflow);
clk = 0;
reset = 1;
enable = 0;
up_down = 0;
#10 reset = 0;
#1 enable = 1;
#20 up_down = 1;
#30 $finish;
end
always #1 clk = ~clk;
lfsr_updown U(
.clk ( clk ),
.reset ( reset ),
.enable ( enable ),
.up_down ( up_down ),
.count ( count ),
.overflow ( overflow )
);
endmodule
|